Beste,
De gebruiker importeert een excelsheet als gelinkte tabel naar access. Daarna kiest de gebruiker in een combobox voor de door hem net aangemaakte tabel (een kwestie van mij de naam door te spelen van de door hem aangemaakte tabel). Dus ik bezit nu de naam van de tabel in een string.
Wanneer ik echter deze tabelnaam gebruik in mijn sql left join doet acces moeilijk. Ik kan de tabel openen met vbacode, maar om de één of andere reden wilt de left join niet lukken, hij valt namelijk over de naam van de tabel. Hieronder een stukje van de door mij gebruikte code achter mijn knop continue... dus na de importatie van de tabel via een wizard en na keuze van de tabel in de combobox. Mijn code voor de sql is juist indien ik de echte naam van de geimporteerde tabel gebruik. Trouwens ik kan de geimporteerde tabel ook laten openen. Ik moet ergens iets over het hoofd zien. Het zit hem waar ik mijn query aanmaak en ik verwijs naar de string die de tabel voorstelt. In feite, welke syntax moet ik gebruiken om de naam van de tabel weer te geven in de sql code.
Van harte bedankt indien iemand dit moeilijke probleem kan oplossen, ik zocht me al rot om een voorbeeld te vinden.
Claudine
Private Sub cmdContinue_Click()
'On Error GoTo Err_cmdContinue_Click
'Een variable om de geimporteerde excelsheet in te zetten
Dim tblExcelsheet As New DAO.TableDef
Dim strImportedExcelsheet As String
'een variable om het sql statement in te zetten
Dim strSQL As String
Dim qdf As DAO.QueryDef
Dim db As DAO.Database
Set db = CurrentDb
'De waarde gekozen in de combobox opslaan in een str
strImportedExcelsheet = Me.cboNameImportedExlsht
Set tblExcelsheet = db.CreateTableDef("strImportedExcelsheet")
tblExcelsheet.Name = "strImportedExcelsheet"
DoCmd.OpenTable strImportedExcelsheet
'de tabel opent zich zonder problemen
'Zou nu nog graag testen op wat de laatste kolom van de tabel als naam heeft
' in deze naam zou zeker ergens site moeten zitten "*site*"
'code nog te zoeken om de naam van de laatste kolom te weten te komen en te testen of dit wel degelijk Site Code is (de veldnaam waarmee gelinkt wordt).
strSQL = "SELECT [strImportedExcelsheet].*, qryAlleGebouwenES.*" & _
"FROM [strImportedExcelsheet] LEFT JOIN qryAlleGebouwenES ON [strImportedExcelsheet].[Site Code]=qryAlleGebouwenES.gebSiteCodeId"
qdf.SQL = strSQL
DoCmd.OpenQuery "qryExcelsheet"
Set qdf = Nothing
Set db = Nothing
De gebruiker importeert een excelsheet als gelinkte tabel naar access. Daarna kiest de gebruiker in een combobox voor de door hem net aangemaakte tabel (een kwestie van mij de naam door te spelen van de door hem aangemaakte tabel). Dus ik bezit nu de naam van de tabel in een string.
Wanneer ik echter deze tabelnaam gebruik in mijn sql left join doet acces moeilijk. Ik kan de tabel openen met vbacode, maar om de één of andere reden wilt de left join niet lukken, hij valt namelijk over de naam van de tabel. Hieronder een stukje van de door mij gebruikte code achter mijn knop continue... dus na de importatie van de tabel via een wizard en na keuze van de tabel in de combobox. Mijn code voor de sql is juist indien ik de echte naam van de geimporteerde tabel gebruik. Trouwens ik kan de geimporteerde tabel ook laten openen. Ik moet ergens iets over het hoofd zien. Het zit hem waar ik mijn query aanmaak en ik verwijs naar de string die de tabel voorstelt. In feite, welke syntax moet ik gebruiken om de naam van de tabel weer te geven in de sql code.
Van harte bedankt indien iemand dit moeilijke probleem kan oplossen, ik zocht me al rot om een voorbeeld te vinden.
Claudine
Private Sub cmdContinue_Click()
'On Error GoTo Err_cmdContinue_Click
'Een variable om de geimporteerde excelsheet in te zetten
Dim tblExcelsheet As New DAO.TableDef
Dim strImportedExcelsheet As String
'een variable om het sql statement in te zetten
Dim strSQL As String
Dim qdf As DAO.QueryDef
Dim db As DAO.Database
Set db = CurrentDb
'De waarde gekozen in de combobox opslaan in een str
strImportedExcelsheet = Me.cboNameImportedExlsht
Set tblExcelsheet = db.CreateTableDef("strImportedExcelsheet")
tblExcelsheet.Name = "strImportedExcelsheet"
DoCmd.OpenTable strImportedExcelsheet
'de tabel opent zich zonder problemen
'Zou nu nog graag testen op wat de laatste kolom van de tabel als naam heeft
' in deze naam zou zeker ergens site moeten zitten "*site*"
'code nog te zoeken om de naam van de laatste kolom te weten te komen en te testen of dit wel degelijk Site Code is (de veldnaam waarmee gelinkt wordt).
strSQL = "SELECT [strImportedExcelsheet].*, qryAlleGebouwenES.*" & _
"FROM [strImportedExcelsheet] LEFT JOIN qryAlleGebouwenES ON [strImportedExcelsheet].[Site Code]=qryAlleGebouwenES.gebSiteCodeId"
qdf.SQL = strSQL
DoCmd.OpenQuery "qryExcelsheet"
Set qdf = Nothing
Set db = Nothing