Access97总是报告数据类型错误
编号:QA000045
建立日期: 1998年10月21日 最后修改日期:1998年10月21日
所属类别:
沙湘鹏:
我用Access97建了一个数据库,其中的一个表table1用一个字段ID,类型为自动编号(长整型)。我想用一个SQL查询来查找ID等于某个号码的记录,程序代码片断如下:
Option Explicit
Dim db As Database
Dim rs1 As Recordset
Dim strsql1 As String
Dim tmp1, tmp2 As Variant
Private sub form_load()
Set db = OpenDatabase("c:\db1.mdb")
Private Sub Cmd1_Click()
'tmp1的值由窗体的文本框txt1得到
tmp1=txt1
tmp2=clng(tmp1)
strsql1 = "select * from table1 where table1.ID= '" & tmp2 & "' "
Set rs1 = db.OpenRecordset(strsql1)
rs1.MoveFirst
程序总是报告数据类型错误。我应该如何写这段代码呢?
回答:
你对SQL命令有一点误解。SQL语句"select * from table1 where table1.ID= 123"表示从表table1中寻找ID字段值为123的记录,这里的ID字段是数字型的。而"select * from table1 where table1.ID= '123'"表示ID字段为字符串型。按你的程序运行,假定tmp1得到的字符串是"123",尽管你把这个字符串转换成为长整型tmp2,但字符串变量strsql1的值是"select * from table1 where table1.ID= '123'",这样的结果只能理解为ID字段为字符串型,而实际ID字段为长整型。显然数据类型错误。而你使用clng函数对tmp2变量进行转换并不表明ID字段是长整型!正确的语法是
strsql1 = "select * from table1 where table1.ID= " & txt1
我们把单引号去掉了,而tmp1和tmp2变量也是多余的,直接使用txt1就行了。
此问题由李海回答。
| |
|
|
| |
|
|