热情软件屋

 

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就行了。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio