请教各位大侠:关于VFP 6.0中访问SQL SERVER数据库的问题。。

winsonruan 2008-05-20 08:14:24

问题1:如何在VFP 6.0中使用表格和组合框访问SQL SERVER??

  小弟正在使用VFP6.0编程序,需要使用表格表现在SQL SERVER中的查询结果,及使用组合框来选择字段并属于SQL SERVER!
VFP 6.0中可以使用类似VB中DATAGRID 及 DATACOMBO么?


问题2:其实是问题1的扩展。
=sqle(b,'update 表1 set jgdm="XXXXXXXXXX" where gddm="XXXXXXXXXX"')
上述语句中的'XXXXXXXXXX" 如何用组合框的选择结果代替?产生的临时表结果SQLRESULT又如何显示在表格中?

问题3:有什么简单办法可以快速删除程序产生的DBF文件?我现在是用!del 文件1 文件2的方法!有没有其他办法?
...全文
154 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2008-05-22
  • 打赏
  • 举报
回复
dd=sqle(D,"select * from AAA WHERE GDZH="+thisFROM.TEXT2.value+" AND ZQDM="+thisFROM.TEXT2.value+"","temp1")
if dd<0

endif
十豆三 2008-05-22
  • 打赏
  • 举报
回复
改为:

if sqle(D,"select * from AAA WHERE GDZH="+THISFORM.TEXT2.VALUE+" AND ZQDM="+THISFORM.TEXT2.VALUE,"temp1") <=0

if sqle(D,"select * from AAA WHERE GDZH=?THISFORM.TEXT2.VALUE AND ZQDM=?THISFORM.TEXT2.VALUE","temp1") <=0
wwwwb 2008-05-22
  • 打赏
  • 举报
回复
+:是连接字符串用
dd=sqle(D,"select * from AAA WHERE GDZH="+FROM2.TEXT2.TEXT+" AND ZQDM="+FROM2.TEXT2.TEXT+"","temp1")

sele temp1
if eof()
无记录 
end if
winsonruan 2008-05-22
  • 打赏
  • 举报
回复
非常感谢两位!结贴!!!
WWWWA 2008-05-22
  • 打赏
  • 举报
回复
if len(allt(thisform.combo1.value))>0 and len(allt(thisform.text5.value))>0
winsonruan 2008-05-22
  • 打赏
  • 举报
回复
最后一个问题:

if thisform.combo1.value<>"" and thisform.text5.value<>""
无法判断是否有输入值,无论有无输入,均为假!如何修改?
十豆三 2008-05-22
  • 打赏
  • 举报
回复
看一下近回值是多少:

?sqle(D,"select * from AAA WHERE GDZH=?THISFORM.TEXT2.VALUE AND ZQDM=?THISFORM.TEXT2.VALUE","temp1")

你的D是连接句柄,你的AAA是你连接数据库中的表名,确认这些没问题吗?
WWWWA 2008-05-22
  • 打赏
  • 举报
回复
if sqle(D,"select * from AAA WHERE GDZH=?THISFORM.TEXT2.VALUE AND ZQDM=?THISFORM.TEXT2.VALUE","temp1") <=0
这是判断SQL命令是否成功执行,要判断是否有记录:
sele temp1
if eof()
无记录 
end if
winsonruan 2008-05-22
  • 打赏
  • 举报
回复
非常感谢两位,大部分问题解决了!还有以个小问题!

现在我是用
if sqle(D,"select * from AAA WHERE GDZH=?THISFORM.TEXT2.VALUE AND ZQDM=?THISFORM.TEXT2.VALUE","temp1")<=0
这条

但是不论有无记录,它都为假!执行ELSE后面的。怎么办呢?
WWWWA 2008-05-22
  • 打赏
  • 举报
回复
if sqle(D,"select * from AAA WHERE GDZH='"+THISFORM.TEXT2.VALUE+"' AND ZQDM='"+THISFORM.TEXT2.VALUE+"'","temp1") <=0
十豆三 2008-05-22
  • 打赏
  • 举报
回复
都是字符就用:

if sqle(D,"select * from AAA WHERE GDZH=?THISFORM.TEXT2.VALUE AND ZQDM=?THISFORM.TEXT2.VALUE","temp1")<=0



if sqle(D,"select * from AAA WHERE GDZH='"+THISFORM.TEXT2.VALUE+"' AND ZQDM='"+THISFORM.TEXT2.VALUE+"'","temp1") <=0



if sqle(D,"select * from AAA WHERE GDZH='"+alltrim(THISFORM.TEXT2.VALUE)+"' AND ZQDM='"+alltrim(THISFORM.TEXT2.VALUE)+"'","temp1") <=0
winsonruan 2008-05-22
  • 打赏
  • 举报
回复
都是字符
wwwwb 2008-05-22
  • 打赏
  • 举报
回复
你的字段是什么类型?
十豆三 2008-05-22
  • 打赏
  • 举报
回复
少引号:

改为

if sqle(D,"select * from AAA WHERE GDZH='"+THISFORM.TEXT2.VALUE+"' AND ZQDM='"+THISFORM.TEXT2.VALUE+"'","temp1")<=0



if sqle(D,"select * from AAA WHERE GDZH='"+alltrim(THISFORM.TEXT2.VALUE)+"' AND ZQDM='"+alltrim(THISFORM.TEXT2.VALUE)+"'","temp1")<=0
winsonruan 2008-05-22
  • 打赏
  • 举报
回复



奇怪了!使用
if sqle(D,"select * from AAA WHERE GDZH=?THISFORM.TEXT2.VALUE AND ZQDM=?THISFORM.TEXT2.VALUE","temp1") <=0
就可以!!

但是使用
if sqle(D,"select * from AAA WHERE GDZH="+THISFORM.TEXT2.VALUE+" AND ZQDM="+THISFORM.TEXT2.VALUE,"temp1") <=0

怎么也不行?两个语句有什么不同???
十豆三 2008-05-21
  • 打赏
  • 举报
回复
1、
*--请参考:FAQ -
<vfp如何使用spt>
http://faq.csdn.net/read/175938.html

VFP中有Grid和Combobox控件

2、
=sqlexec(b,'update 表1 set jgdm=?thisform.combo1.displayvalue where gddm=?thisform.combo2.displayvalue')

thisform.grid1.recordsource=null
if sqlexec(连接句柄,"select * from 表名","临时表名")<=0
MESSAGEBOX('出错了')
return
ENDIF
thisform.grid1.recordsource="临时表名"
thisform.grid1.refresh

或参考:FAQ -
<vfp如何使用spt>
http://faq.csdn.net/read/175938.html

3、
close data all
delete file *.dbf
wwwwb 2008-05-21
  • 打赏
  • 举报
回复
1、也可以用远程视图来访问SQL SERVER表,注意设置可以更新字段、KEY字段、发送UPDATE SQL。
WWWWA 2008-05-21
  • 打赏
  • 举报
回复
问题1:如何在VFP 6.0中使用表格和组合框访问SQL SERVER??

  小弟正在使用VFP6.0编程序,需要使用表格表现在SQL SERVER中的查询结果,及使用组合框来选择字段并属于SQL SERVER!
VFP 6.0中可以使用类似VB中DATAGRID 及 DATACOMBO么?

用GRID控件,设置数据源为临时表


问题2:其实是问题1的扩展。
=sqle(b,'update 表1 set jgdm="XXXXXXXXXX" where gddm="XXXXXXXXXX"')
上述语句中的'XXXXXXXXXX" 如何用组合框的选择结果代替?产生的临时表结果SQLRESULT又如何显示在表格中?

=sqle(b,'update 表1 set jgdm="XXXXXXXXXX" where gddm="'+thisform.组合框.value+'"')

问题3:有什么简单办法可以快速删除程序产生的DBF文件?我现在是用!del 文件1 文件2的方法!有没有其他办法?

DECLARE INTEGER ShellExecute IN Shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER
shellexecute(0,'open','command.com','/k DEL D:\temp\*.DBF',0,0)
winsonruan 2008-05-21
  • 打赏
  • 举报
回复
但是我执行if sqle(D,"select * from AAA WHERE GDZH="+FROM2.TEXT2.TEXT+" AND ZQDM="+FROM2.TEXT2.TEXT+"","temp1") <=0




输入正确的记录后老是说找不到记录!为什么呢?

另外:+号是什么意思呢?
WWWWA 2008-05-21
  • 打赏
  • 举报
回复
1
用GRID控件,设置数据源为临时表
thisform.grid1.recordsource="临时表名"
thisform.grid1.refresh

3
DECLARE INTEGER ShellExecute IN Shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER
shellexecute(0,'open','command.com','/k DEL D:\temp\*.DBF',0,0)

or
delete file *.dbf

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧