在VB6中用ADO查寻数据库的问题

wangqiongyue 2000-07-25 09:23:00
我在VB6中用的是ADODC控件连接的ACCESS97数据库,现在想编写查寻数据的程序,
我想知道在VB6中使用ADO的方式如果正确的使用SQL来操作数据库。下面我有一段
代码,但是VB6老说FROM子句有错,我估计是需要先定义表名,但我不知道在VB6
中是如何做的,请告知。难道在VB6中就没有象VFP中的LOCATE这样的命令吗?我
找了很多资料都是针对DAO的方式操作数据库,但我不想用DAO。难道现在ADO还
需要DAO来辅助吗?
******************
Private Sub Command8_Click()
Dim table1 As String
Dim sql As String
a = Text5.Text
sql = "SELECT num FROM table1 where num=a"
database1.RecordSource = sql
'database1 is adodc
database1.Refresh
dbgrid1.refresh
End Sub
'这段程序运行后VB6就说"syntax error in from clause" 奇怪的是去掉DATABASE1.REFRESH这句后
此程序运行就无反应,加上这句就出错。
...全文
289 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangqiongyue 2000-07-28
  • 打赏
  • 举报
回复
这个问题已解决了,最后还是听朋友的用了DAO才搞定的。用ADO方式错误依旧,
等MICROSFOT明年出了VB7再说吧,呵呵。总之还是感谢感谢。
estone 2000-07-27
  • 打赏
  • 举报
回复
sql = "Select Num From table1 Where Num = " & a
如果table1是表名,直接引用即可,不用 &分隔的。
huntout 2000-07-27
  • 打赏
  • 举报
回复
a = Text5.Text
t = ADODC1.RecordSource
'在這兒設一斷點
sql = "Select Num From " & t & " Where Num=" & a

調試一下,確認t得到了你的表名,a得到了要查詢的Num值
wangqiongyue 2000-07-27
  • 打赏
  • 举报
回复
错误信息是SQL 的FROM字句出错
fuzhanyu 2000-07-26
  • 打赏
  • 举报
回复
加上一句:
dim a as string
wangqiongyue 2000-07-26
  • 打赏
  • 举报
回复
Dim a As Variant
Dim t As String
Dim sql As String
a = Text5.Text
t = ADODC1.RecordSource
sql = "Select Num From " & t & " Where Num=" & a
ADODC1.RecordSource = sql
ADODC1.Refresh
各位大哥我非常感谢你们的热心帮助,但是我现在该做的都做了,但VB还是出同样的错,
真是气死我了。我现在终于知道为什么VB搞数据库没有VFP快了。你们就再帮我检查一下
这个烦人的SQL吧,我一定会给你们很多分的。谢了。
zzh 2000-07-26
  • 打赏
  • 举报
回复
参考如下打开数据库代码:
Public db As New Connection
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
//此处也可以用ODBC方式打开
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=D:\study\vb\lsc1.mdb;"


Dim i As Long
Dim id As Long
Dim Begin
Begin = Time
Dim rst As New Recordset
Set rst = New Recordset
//把SQL语句写好
rst.Open "select * from 模拟量变化历史表 where id=1097", db, adOpenDynamic, adLockOptimistic
rst.MoveFirst
For i = 0 To rst.RecordCount - 1
id = rst.Fields("ID")
rst.MoveNext
ProgressBar1.Value = i
Next i
rst.Close
Set rst = Nothing
db.Close
bing71 2000-07-26
  • 打赏
  • 举报
回复
是不是你还没打开数据库?要先打开数据库后,才能用SQL语句打开表查询的。
Wingsun 2000-07-26
  • 打赏
  • 举报
回复
改成dim a as string ' Variant
Text5.text的内容是什么?
huntout 2000-07-26
  • 打赏
  • 举报
回复
把錯誤信息貼出來,ok?
lczddd 2000-07-25
  • 打赏
  • 举报
回复
你的表名错了,要用acess数据库中的那个表名,首先要建立连接
dim cn as rdo.rdoconnection
cn......
dim rs
set rs=cn.open sql 'sql=select * from 表名
不能随便的定义的table1
zcom 2000-07-25
  • 打赏
  • 举报
回复
我太同意TYRO 的观点了!
table1="表1"
sql="Select num from " & table1 & " where num=0"
...

___ 我是 ZCOM .
Wingsun 2000-07-25
  • 打赏
  • 举报
回复
Table1变量没有赋值啊
程序中要传递的SQL语句是一个字符串,ADO怎么知道你的Table1=? a=?
所以需要将Table1,和a的值告诉ADO
SQL="Select Num From " & Table1 & " Where Num=" & a
Num的类型不一样写法也不一样的。
日期类型:
SQL="Select Num From " & Table1 & " Where Num=#" & Format(Cdate(a),"YYYY/MM/DD") & "#"
字符类型︰
sql = "Select Num From " & Table1 & " Where Num='" & a & "'"
数值类型︰
sql = "Select Num From " & Table1 & " Where Num=" & a
...
Tyro 2000-07-25
  • 打赏
  • 举报
回复
哦!应该是sql= "SELECT num FROM " & table1 & " where num='" & a & "'"
Tyro 2000-07-25
  • 打赏
  • 举报
回复
你定义了变量table1怎么没有赋值呀?
如果sql中的table1就是那个变量,应该写成:
sql= "SELECT num FROM " & table1 & " where num=a"
如果不执行DATABASE1.REFRESH,那条sql并没有执行,当然没有反应
huntout 2000-07-25
  • 打赏
  • 举报
回复
num字段是字符型的話︰
sql = "SELECT num FROM table1 where num='" & a & "'"
num字段是數字型的話︰
sql = "SELECT num FROM table1 where num=" & a
TopHead 2000-07-25
  • 打赏
  • 举报
回复
sql = "SELECT num FROM table1 where num=a"


这句话有错,应该写成:

sql = "SELECT num FROM table1 where num='" & a & "'"
leslielu 2000-07-25
  • 打赏
  • 举报
回复
sql = "select num from numtable where num=a"
难道你的表名就叫 table1 ?
如果那样我就不知道有什么问题了, 在 FROM 后面直接写你的数据库中的表名呀.
也许我说得什么都不是, 我还没理解你的问题.

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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