» Off-"Flitsservice" » Techniek Reclamevrij? Log aub in, kost niets   



 Pagina 1 van 1  [ 7 berichten ]
Scaniafan
Master
 Bericht 
:lol:

Goed, ik ben een database aan het maken waar wij moeten bijhouden welke trailers de vervoerders hebben, en met referenties aan andere tabellen welke trailers vervoerders mogen gebruiken voor onze klant.

De lijsten en tabellen en alles werkt goed, keurige queries erop die weergeven wat ik wil (in principe alles op basis van de unique ID (Carrier ID, Constructor ID etc.).

Nu heb ik een test query die alle "approved" trailers weergeeft. Dat werkt goed. Die wil ik exporteren naar een excel file met per vervoerder een sheet, zodat de klant snel kan vinden of de trailer approved is als de vervoerder voor de deur staat.

Daar heb ik via Google deze code op gezet:

Code:
Private Sub Export_Approved_Total_Click()

    Dim qdf As DAO.QueryDef
    Dim dbs As DAO.Database
    Dim rstMgr As DAO.Recordset
    Dim strSQL As String, strTemp As String, strMgr As String
   
    Const strFileName As String = "Approved Trailerlist"
    Const strQName As String = "zExportQuery"
   
    Set dbs = CurrentDb
   
    strTemp = dbs.TableDefs(0).Name
    strSQL = "SELECT * FROM [" & strTemp & "] WHERE 1=0;"
    Set qdf = dbs.CreateQueryDef(strQName, strSQL)
    qdf.Close
    strTemp = strQName
   
    strSQL = "SELECT DISTINCT Carrier FROM QRY_Approved_Trailers;"
    Set rstCarrier = dbs.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly)
   
    If rstCarrier.EOF = False And rstCarrier.BOF = False Then
          rstCarrier.MoveFirst
          Do While rstCarrier.EOF = False

                strCarrier = DLookup("Carrier", "QRY_Approved_Trailers", _
                      "Carrier = " & rstCarrier!Carrier.Value)

                strSQL = "SELECT * FROM QRY_Approved_Trailers WHERE " & _
                      "Carrier = " & rstCarrier!Carrier.Value & ";"
                Set qdf = dbs.QueryDefs(strTemp)
                qdf.Name = strCarrier
                strTemp = qdf.Name
                qdf.SQL = strSQL
                qdf.Close
                Set qdf = Nothing

                DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
                      strTemp, "C:\Users\xxxxxxx\Documents\Trailerlists\" & Date & " - " & strFileName & ".xls"
                rstCarrier.MoveNext
          Loop
    End If
   
    rstCarrier.Close
    Set rstCarrier = Nothing
   
    dbs.QueryDefs.Delete strTemp
    dbs.Close
    Set dbs = Nothing

End Sub


Als ik de query exporteer naar Excel, krijg ik in Excel echter de ID's van velden als Carrier en Constructor. Logisch, want de complete database draait op basis van ID's

Echter, leesbaar is dit niet. Dus, ik de query aangepast om i.p.v. de ID's de bijbehorende namen weer te geven. In Access werkt het goed, als ik de query wil draaien krijg ik de foutmelding

Citaat:
Run-time error '3075':

Syntax error (missing operator) in query expression 'Carrier = xxxxxxx'.


en debug verwijst naar

Code:
                strCarrier = DLookup("Carrier", "QRY_Approved_Trailers", _
                      "Carrier = " & rstCarrier!Carrier.Value)


Het is vrijdagmiddag, ik doe iets overduidelijks fout, ik ga met 15 minuten weekend vieren en ben benieuwd of ik maandag verder kan, dus alle hulp is welkom :biertje:

OlieTankeR
Master
 Bericht 
 
Moet de xxxxx niet tussen quotes? Bij numeriek hoeft het vaak niet. Bij strings / varchar etc wel

graspol
Master
 Bericht 
OlieTankeR schreef:
Moet de xxxxx niet tussen quotes? Bij numeriek hoeft het vaak niet. Bij strings / varchar etc wel


dat dus: Strings altijd tussen quotes

wellproc
Master
 Bericht 
Is het resultaat van de functie DLookup wel een string?
Dan zou je CStr(DLookup(...)) moeten doen. Dus het resultaat van de functie omzetten naar string alvorens je dat toewijst aan strCarrier.

Rover
Master
 Bericht 
Pff, Access, laatste tijd ook nogal mee bezig. Waarom niet gewoon een query ontwerpen en alleen de velden die je zichtbaar wilt hebben als zichtbaar aanvinken.
Vervolgens gewoon de exportstappen opslaan en die aanroepen via een macro. Scheelt een hoop aan vba zelf schrijven :)

bruintje beer
Master
 Bericht 
Code:
                qdf.SQL = strSQL
                qdf.Close
                Set qdf = Nothing
Waarom nog een waarde toewijzen aan SQL vlak voordat je vrijgeeft?

Scaniafan
Master
 Bericht 
Goedemorgen :zzz:

OlieTankeR schreef:
Moet de xxxxx niet tussen quotes?


Dat dus inderdaad, had er al mee zitten kloten maar één positie gemist op

Scaniafan schreef:
vrijdagmiddag


bruintje beer schreef:
Waarom nog een waarde toewijzen aan SQL vlak voordat je vrijgeeft?


Omdat ie zo uit Google kwam en werkt :[ en het vrijdagmiddag was en ik geen zin had om na te denken O:)

 Pagina 1 van 1 [ 7 berichten ] 


Wie is er online

Leden op dit forum: Geen geregistreerde gebruikers en 4 gasten


Je mag geen nieuwe onderwerpen in dit forum plaatsen
Je mag niet antwoorden op een onderwerp in dit forum
Je mag je berichten in dit forum niet wijzigen
Je mag je berichten niet uit dit forum verwijderen
Je mag geen bijlagen toevoegen in dit forum

Zoek…         
privacy policy