SQL语句不能用绝对路径,怎么办,我在vb工程里有baK文件夹里0record1.mdb拷贝到data文件夹里record1.mdb,怎么实现?请不吝赐教!

解决方案 »

  1.   

    insert into myTable select * from [C:/temp/access/db1.mdb].SC
      

  2.   

    在程序中得到所选择路径,用代码生成
    copy  所选择目录\baK\0record1.mdb \data\0record1.mdb
    字符串,再执行
      

  3.   

    你用什么数据库?MDB还是MYSQL?
      

  4.   

    我用的是access数据库,我的功能是想实现两个不同路径下两个两个相同表明的数据库之间的拷贝,我实现的合并代码
    '数据库合并
    ''strname(0)目的文件名,strname(1)源文件名
    Public Sub joinAccessFile(ByRef targpath As String, ByRef sourPath As String, ByRef strName() As String)
        Dim requete As String, ac As String
        Dim conn1 As ADODB.Connection
        Dim conn2 As ADODB.Connection
        Dim strcon1 As String
        Dim strcon2 As String
        Dim rst1 As ADODB.Recordset
        Dim rst2 As ADODB.Recordset
        Dim H As Integer, i As Integer, K As Integer
        Dim kk As String, jj As String, str As String, str1 As String
        Dim strname1 As String
        strname1 = ".作业记录"     requete = "select * from 作业记录"
        
         Set conn1 = New ADODB.Connection
         Set conn2 = New ADODB.Connection
         strcon1 = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=false;Data Source=" & targpath & "\" & strName(0) & ""
         conn1.Open strcon1
         Set rst1 = conn1.Execute(requete)
         str = Left(strName(0), Len(strName(0)) - 4)
         strcon2 = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=false;Data Source=" & sourPath & "\" & strName(1) & ""
         conn2.Open strcon2
        Set rst2 = conn2.Execute(requete)
        Static BB As Integer
                
          For H = 0 To rst1.Fields.count - 1
              kk = rst1.Fields(H).name
               For i = 0 To rst2.Fields.count - 1
               jj = rst2.Fields(i).name
               If kk = jj Then
                   BB = BB + 1
               End If
               Next i
           Next H
         If BB < rst1.Fields.count And rst1.Fields.count <= rst2.Fields.count Then
             MsgBox "字段不一致"
         Else
        str1 = Left(strName(1), Len(strName(1)) - 4)
             ac = "insert into " & targpath & "\" & str & ".作业记录" & " select *from " & sourPath & "\" & str1 & ".作业记录"
            conn2.Execute (ac)
         '   MsgBox "合并成功"
         End If
         rst2.Close
         conn2.Close
         rst1.Close
         conn1.Close
        
    End Sub
    编译生成exe文件运行都没有问题,我用Setup Factory 7.0打包安装后,运行出现“insert into 语法错误”,定位出现在这句话上:ac = "insert into " & targpath & "\" & str & ".作业记录" & " select *from " & sourPath & "\" & str1 & ".作业记录",这里有路径问题,请大家帮忙给看看
      

  5.   

    你将ac中的内容显示出来看看(在代码中加入 MSGBOX AC),SQL语句是否正确
      

  6.   

    你将ac中的内容显示出来看看(在代码中加入 MSGBOX AC),SQL语句是否正确 
     我显示看了,是正确的
      

  7.   

    insert into c:\program files\埋缆机\data\rcord5.作业记录 select *from c:\program files\埋缆机\bak\record5\1record5.作业记录
      

  8.   

    如果把数据库放到exe的同层目录,打包就没有问题了,放到下一级目录打包后就有问题
      

  9.   


    insert into [;database=c:\program files\埋缆机\data\rcord5.mdb].作业记录 
    select * from [;database=c:\program files\埋缆机\bak\record5\1record5.mdb].作业记录
      

  10.   

    对,这是JETSQL,将AC中的内容修改为上述 ,再试试,我测试通过的
      

  11.   

    ac = "insert into " & targpath & "\" & str & ".作业记录" & " select *from " & sourPath & "\" & str1 & ".作业记录"
    这句该怎么改写
      

  12.   

    ac = " insert into" & "[;" & "database=" & targpath & "\" & strName(0) & "]" & ".作业记录" & "select * from" & " [;" & "database=" & sourPath & "\" & strName(1) & "]" & ".作业记录"
    我改成这样还有语法错误
      

  13.   

    ac = " insert into" & "[;" & "database=" & targpath & "\" & strName(0) & "]" & ".作业记录" & " select * from" & " [;" & "database=" & sourPath & "\" & strName(1) & "]" & ".作业记录"注意:第2个SELECT前有1个空格
      

  14.   

    加个空格好了,我在测试,感谢wwwwb
      

  15.   

    insert into c:\program files\埋缆机\data\rcord5.作业记录 select *from c:\program files\埋缆机\bak\record5\1record5.作业记录你的这个格式不对啊。应该是insert into 当前数据库表 select * from [c:\ttt\xxx\db1.mdb].table1
      

  16.   

    已经解决!谢谢wwwwb及ACMAIN_CHM