2014-07-25 26 views
0

我有問題使用兩個MDB在VB6選擇到形成這個SQL字符串第三

Select A.ID, A.AstTp, A.Offset, A.Age, B.LNo, B.ACnt, B.CommCnt 
Into [LnReg] 
From [ALPA] In [c:\Temp\ALPA.mdb] As A 
LEFT OUTER JOIN 
[ALX] IN [c:\Temp\ALX.mdb] As B On A.ID = B.ID Where (A.AstTp="Sealed") 

我ADO連接與LnReg的MDB。

拋出的錯誤是'[c:\ Temp \ ALPA.mdb]'不是有效的名稱。

[編輯]在語法錯誤FROM子句

Select A.ID, A.AstTp, A.Offset, A.Age, B.LNo, B.ACnt, B.CommCnt 
Into [LnReg] 
From [ALPA] In "c:\Temp\ALPA.mdb" As A 
LEFT OUTER JOIN 
[ALX] IN "c:\Temp\ALX.mdb" As B On A.ID = B.ID Where (A.AsTp="Sealed") 

回答

1

我寧願從其他MDB文件鏈接表主mdb文件。我使用這個函數來連接表。使用鏈接的表格,您可以使用本地表格進行任何操作。

Function AccessLinkToTable(sLinkFromDB As String, sLinkToDB As String, sLinkToTable As String, Optional sNewLinkTableName As String, Optional sPassword As String) As Boolean 
    'Inputs  : sLinkFromDB     The path to the original database. 
    '    sLinkToDB     The path to the database to link to. 
    '    sLinkToTable    The table name to link to in sLinkToDB. 
    '    [sNewLinkTableName]   The name of the new link table. sLinkFromDB. 
    'Outputs  : Returns True if succeeded in linking to the table 
    'Author  : Andrew Baker www.vbusers.com 
    'Date  : 03/09/2000 14:17 
    'Notes  : Requires a reference to reference to both ADO (MS ActiveX Data Objects) and MSADOX.DLL 
    '    (MS ADO Ext. 2.5 DLL and Security). 
    'Revisions : 21.1.2002, Roman Plischke, password 
    Dim catDB As ADOX.Catalog 
    Dim TblLink As ADOX.Table 

    On Error GoTo ErrFailed 
    If Len(Dir$(sLinkFromDB)) > 0 And Len(Dir$(sLinkToDB)) > 0 Then 
     'Databases exist 
     Set catDB = New ADOX.Catalog 
     'Open a Catalog on database in which to create the link. 
     catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sLinkFromDB 

     Set TblLink = New ADOX.Table 
     With TblLink 
      'Name the new Table 
      If Len(sNewLinkTableName) Then 
       .Name = sNewLinkTableName 
      Else 
       .Name = sLinkToTable 
      End If 

      'Set ParentCatalog property to the open Catalog. 
      'This allows access to the Properties collection. 
      Set .ParentCatalog = catDB 

      'Set the properties to create the link. 
      .Properties("Jet OLEDB:Create Link") = True 
      .Properties("Jet OLEDB:Link Datasource") = sLinkToDB 
      .Properties("Jet OLEDB:Remote Table Name") = sLinkToTable 
      If Len(sPassword) Then 
       .Properties("Jet OLEDB:Link Provider String") = "MS Access;Pwd=" & sPassword 
      End If 
     End With 

     'Append the table to the Tables collection. 
     catDB.Tables.Append TblLink 
     Set catDB = Nothing 
     'Set return as success 
     AccessLinkToTable = True 
    End If 
    Exit Function 

ErrFailed: 
    On Error GoTo 0 
    AccessLinkToTable = False 
End Function 

Function AccessLinkTableUpdate(sLinkDatabasePath As String, sLinkToNewDatabase As String, sLinkTableName As String) As Boolean 
    Dim catDB As ADOX.Catalog 

    On Error GoTo ErrFailed 
    Set catDB = New ADOX.Catalog 
    'Open a catalog on the database which contains the table to refresh. 
    catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sLinkDatabasePath 
    If catDB.Tables(sLinkTableName).Type = "LINK" Then 
     catDB.Tables(sLinkTableName).Properties("Jet OLEDB:Link Datasource") = sLinkToNewDatabase 
     AccessLinkTableUpdate = True 
    End If 
    Set catDB = Nothing 
    Exit Function 

ErrFailed: 
    On Error GoTo 0 
    AccessLinkTableUpdate = False 
End Function 
+0

對不起, – Hank

0

嘗試使用雙引號,而不是方括號:

Select A.ID, A.AstTp, A.Offset, A.Age, B.LNo, B.ACnt, B.CommCnt 
Into [LnReg] 
From [ALPA] In "c:\Temp\ALPA.mdb" As A LEFT OUTER JOIN 
    [ALX] IN "c:\Temp\ALX.mdb" As B 
    On A.ID = B.ID 
Where (A.AstTp="Sealed"); 
+0

我現在正在收到「FROM子句中的語法錯誤」,在問題中編輯了一個EDIT以反映新的查詢。我使用以下從dbf到mdb的表,也許這是類似的這個問題? – Hank

+0

strSQL =「SELECT * INTO [」&table_name&「] FROM [dBase IV; DATABASE =」&sourceDBpath&「]。[」&table_name&「]」 – Hank

0
Select A.ID, A.AstTp, A.Offset, A.Age, B.LNo, B.ACnt, B.CommCnt 
Into [LnReg] 
From [c:\Temp\ALPA.mdb].ALPA As A 
LEFT OUTER JOIN [c:\Temp\ALX.mdb].ALX As B On A.ID = B.ID Where (A.AstTp="Sealed") 
相關問題