Form koppelen aan SelectieQuery

Status
Niet open voor verdere reacties.
Oke, ik heb nu ook al op spaties gecontroleerd en de code nauwkeurig nagekeken. Verder kom ik erachter dat ik met alleen het stukje code voor het aanroepen van mij al bestaande query, dus deze code: stDocName = "Query10" DoCmd.OpenQuery stDocName, acNormal, acEdit precies dezelfde uitvoer heeft (alleen zonder foutmelding) als zonder de geschreven SQLstring met het stukje daaronder. Misschien dat het dan toch aan het stukje code voor het openen van de recordset ligt. De geschreven SQLstring is dus overbodig eigenlijk omdat deze in principe precies hetzelfde doet als wanneer je de bestaande query zo oproept.
 
Als je de posts terugleest, zul je zien dat ik dat al eerder zei, namelijk dat je de query10 kunt vervangen door een in VBA opgebouwde query... Het is ook de bedoeling dat de sql code hetzelfde is.
De vraag is dus weer: waar loopt de code vast, als je hem uitvoert? Want krijg je nu wel of niet een string in een inputbox?
 
Sorry ik lees het nu terug dat het overzichtelijker is om zo te schrijven. De string komt bij het uitvoeren nu wel in een inputbox staan (wanneer ik jouw stukje code daarvoor gebruik), alleen dan met inplaats van de parameters [ServOrdNr] en [JobNr] de nummers die ik ingevuld heb bij het form. Moet ik deze String plakken in het sql scherm bij het maken van een Query in Access zelf, zonder joins te leggen of criteria op te geven?
Of zo vat ik het op bij jouw vorige post. Wanneer ik deze string plak in zo'n SQL scherm en dan uitvoer krijg ik een prompt venstertje met als naam het nummer wat ik heb ingevoerd in het form. Dus hetzelfde soort venstje als wanneer je een parameter maakt in zo'n query met behulp van Access. Wanneer ik in dit scherm een bestaand nummer invul krijg ik wel een foutmelding: "this expression is type incorrectly or is to complex to eveluate". Maar ik denk niet dat je dit bedoelt?
 
Laatst bewerkt:
Als de code goed is (en compleet) dan moet je de string uit de inputbox in zijn geheel in het SQL venster van de query kunnen plakken. Als je een nieuwe query maakt, en geen tabel kiest, staat daar alleen de tekst SELECT; deze haal je weg en vervang je door de gekopieerde tekst.
Als de code goed is, kun je de query uitvoeren, en krijg je het gewenste resultaat te zien. Hierbij wordt inderdaad de feitelijke waarden uit de comboboxen gebruikt, dus je moet het record zien dat je hebt geselecteerd. Het wordt iets anders als er een fout in de code zit, want dan kan de query niet worden uitgevoerd. In dat geval krijg je een foutmelding, en staat de cursor op de plek in de query waar de fout zit. Op dat punt moet je dan controleren wat er fout zou kunnen zijn. Eventueel verbeteren, query draaien en dan in de VBA van het formulier dezelfde aanpassing maken, zodat de knop query nu wel werkt.
 
Dit heb ik ook gedaan precies zoals jij het zegt, alleen bij het uitvoeren van de query in het sql-scherm krijg ik een prompt venstertje met als naam het nummer wat ik in het form ingevoerd heb. Wanneer ik hierbij dan een waarde mee geef komt er een foutmelding:"this expression is type incorrectly or is to complex to eveluated". Hierbij zou hij dus eigenlijk het juiste record moeten laten zien.
 
Kun je de tekst uit de inputbox hier posten?
 
SELECT dboServiceOrder.No_, dboMasterData.LinkedJobNo, [dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].CODEPOSITION FROM (dboServiceOrder INNER JOIN dboMasterData ON dboServiceOrder.No_ = dboMasterData.[NAV ItemCode]) INNER JOIN dboMasterData AS [dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1] ON dboMasterData.LinkedJobNo = [dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].[NAV ItemCode]WHERE ((dboServiceOrder.No_=SO09050611553500110) AND (dboMasterData.LinkedJobNo=080770090) AND ([dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].CODEPOSITION<>'01' Or ([dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].CODEPOSITION)='05') AND (dboMasterData.TableCode='SERV_ORD') AND ([dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].TableCode='JOB_QZI'));
 
In deze code zit nog een probleem met een spatie:

SELECT dboServiceOrder.No_, dboMasterData.LinkedJobNo, [dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].CODEPOSITION FROM (dboServiceOrder INNER JOIN dboMasterData ON dboServiceOrder.No_ = dboMasterData.[NAV ItemCode]) INNER JOIN dboMasterData AS [dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1] ON dboMasterData.LinkedJobNo = [dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].[NAV ItemCode] WHERE ((dboServiceOrder.No_=SO09050611553500110) AND (dboMasterData.LinkedJobNo=080770090) AND ([dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].CODEPOSITION<>'01' Or ([dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].CODEPOSITION)='05') AND (dboMasterData.TableCode='SERV_ORD') AND ([dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].TableCode='JOB_QZI'));
 
Sorry OctaFish, door omstandigheden ben ik alweer even niet meer in Access geweest, maar nu ik er weer wat mee bezig ben, ben ik erachter gekomen dat ik bij het maken van het form in het formontwerpweergave, dit form als geheel al gekoppeld had aan een bestaande query waardoor hij al een uitvoer genereerde voordat je op een knop drukte (dit nam mogelijk ook deel aan het probleem waar ik hiervoor mee zat). Nu heb ik een form gemaakt zonder er ook maar iets aan te koppelen, waarbij ik dus een lege ontwerpweergave kreeg waarbij ik twee invoervakken met comboboxen + een tekstvak erin heb gezet met als opdrachtknop een Query, hierbij moest ik deze knop al aan een bestaande query koppelen, dit heb ik ook gedaan. Nu heb ik bij de gebeurtenisprocedure de aanroep van deze bestaande query verwijderd en er jouw gemaakt code ingezet. Ik krijg nu echter deze foutmelding:

Extra) in query expression ‘((dboServiceOrder.No=SO090506)AND(dboMasterData.LinkedJobNo=080770090)AND([dbo_modelbedrijfVDLG$MBS_VINCI_QZI_MasterData_1].CODEPOSITION<>’01’) Or ([dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].CODEPOSITION)=’05’) AND
(dboMasterData.TableCode=’SERV_ORD’) AND ([dbo_Modelbedrijf VDLG$MBS_VINCI_QZI_MasterData_1].TableCode=’JOB_QZI’))’.

Deze heb ik nog niet gezien, heeft dit weer iets te maken met een of ander klein typefoutje binnen de sql-code?
Ik heb overigens ook al een spatie gezet bij de where-clausule (wat je aangaf in je vorige post), maar dit was ook niet de oorzaak.
 
Laatst bewerkt:
Is het mogelijk om er een klein voorbeeldje van te maken? Want we zitten nu wel heel erg in het wild om ons heen te schieten... Met een voorbeeldbestandje kunnen we je waarschijnlijk een stuk sneller helpen.
 
Bij de code heb ik nog twee variabelen gedeclareerd, namelijk: ServOrdNr en JobNr. Verder heb ik de SQL code ook in een SQL scherm getest binnen Access hierbij gaf hij dezelfde foutmelding. Zie plaatjes.
Verder dacht ik dat de functie na de SQLstr niet klopt, omdat deze bij de uitvoer (altijd maar een record), naar mijn weten een waarde opvraagt uit een invoerveld "Me.CODEPOSITION.Value". Ik wil juist dat hij bij de uitvoer van dat ene record de waarde uit de kolom CODEPOSITION haalt.
 

Bijlagen

  • foutmelding3.jpg
    foutmelding3.jpg
    20 KB · Weergaven: 29
  • Code2.jpg
    Code2.jpg
    99,9 KB · Weergaven: 54
  • form.jpg
    form.jpg
    29,8 KB · Weergaven: 48
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan