Tj1 = "[表1].[编号] = [表2].[编号]"
Tj2 = "[表1].[值1]=''"
Tj3 = "[表1].[值2]=''"
Tj4 = "[表1].[值3]=''"
Tj5 = "([表2].[日期]-[表2].[日期])>=28"
Tj = Tj1 & " And " & Tj2 & " And " & Tj3 & " And " & Tj4 & " And " & Tj5
Sql = "SELECT * FROM [表1],[表2] Where " & Tj & " ORDER BY [表1].[编号]"

解决方案 »

  1.   

    1、Tj5 = "([表2].[日期]-[表2].[日期])>=28"
    不知日期是何格式?
    2、Sql = "SELECT * FROM [表1],[表2] Where " & Tj & " ORDER BY [表1].[编号]"
    Right: Sql = "SELECT [表1].*,[表2].* FROM [表1],[表2] Where " & Tj & " ORDER BY [表1].[编号]"
      

  2.   

    其实你可以先别进行查询操作,而把sql字符串打印出来或赋值给一个标签或文本框,检查一下它的内容跟你自己预想的同不同然后再慢慢修改正确了再进行查询。
      

  3.   

    字段的格式都是字符型。
    也许我的SQL有问题。
    不过把Tj5去掉也出现错误。
    错误停留在SQL的执行处。
    全部代码如下:Dim Db As Database
    Dim Rs As Recordset
    Dim Sql, Tj1, Tj2, Tj3, Tj4, Tj5 As StringTj1 = "[表1].[编号] = [表2].[编号]"
    Tj2 = "[表1].[值1]=''"
    Tj3 = "[表1].[值2]=''"
    Tj4 = "[表1].[值3]=''"
    Tj5 = "([表2].[日期]-[表2].[日期])>=28"
    Tj = Tj1 & " And " & Tj2 & " And " & Tj3 & " And " & Tj4 & " And " & Tj5
    Sql = "SELECT * FROM [表1],[表2] Where " & Tj & " ORDER BY [表1].[编号]"Set Db = DBEngine.OpenDatabase(App.Path & "\XXX.mdb", Flase, Flase, ";pwd=1234")
    Set Rs = Db.OpenRecordset(Sql, 2)MsgBox "OKOK!!", , "Connect!"
    错误停在 Set Rs= Db.OpenRecordset(Sql,2)如果是以文本格式存储的日期,如何实现Tj5的目的呢?他的SQL应如何写呢?
      

  4.   

    1.建议在sql语句中使用join将表1和表2利用编号连起来,然后再进行查询,并且日期字段最好设置成日期类型,如果是一定设置成字符型,那你就先把字段值读出然后转化成数值型再进行计算,如:Tj5 = "(clng([表2].[日期])-clng([表2].[日期]))>=28"
    2.因为你的SQL语句有问题所以停在你现在打开记录的语句上
      

  5.   

    join 如何使用?介绍介绍,谢谢!