Dim strSQL As String
Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
On Error Resume Next
Kill "x.mdb"
On Error GoTo 0
cat.Create "Provider=Microsoft.jet.oledb.4.0;data source=x.mdb;"
tbl.Columns.Append "cChar", adVarWChar, 5
tbl.Columns.Append "cBool", adBoolean
tbl.Name = "tOne"
tbl.Keys.Append "PK1", adKeyPrimary, "cChar"
cat.Tables.Append tbl
Set tbl = Nothing
tbl.Columns.Append "cChar2", adVarWChar, 5
tbl.Columns.Append "cChar3", adVarWChar, 5
tbl.Name = "tTwo"
tbl.Keys.Append "PK2", adKeyPrimary, "cChar2"
cat.Tables.Append tbl
Set tbl = Nothing
Set cat = Nothing
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.CursorLocation = adUseClient
cn.Open "Provider=MSDASQL.1;Driver={Microsoft Access Driver (*.mdb)};DBQ=x.mdb;" 'Errors
'cn.Open "provider=Microsoft.jet.oledb.4.0;data source=x.mdb" 'Works
cn.Execute "INSERT INTO tOne VALUES ('aaaaa',0)"
cn.Execute "INSERT INTO tOne VALUES ('bbbbb',1)"
cn.Execute "INSERT INTO tOne VALUES ('ccccc',0)"
cn.Execute "INSERT INTO tTwo VALUES ('aaaaa',1)"
cn.Execute "INSERT INTO tTwo VALUES ('ddddd',1)"
cn.Execute "INSERT INTO tTwo VALUES ('eeeee',1)"
strSQL = "SELECT cChar2, cChar3, cChar, cBool " & _
"FROM tOne LEFT OUTER JOIN tTwo ON tOne.cChar = tTwo.cChar2"
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText
MsgBox rs.RecordCount 'Errors here!