Volledige versie bekijken : Tekstvak in SQL opdracht in access 2010 met VBA geeft een fout



thirty1234
10 December 2012, 15:13
Beste,

Doel: Een volledig gepersonaliseerd formulier aanmaken in access 2010 en gebruik maken van vba.

Volgende fout krijg ik: Waarde voor een of meer vereiste parameters ontbreken. Foutnr -2147217904
Hier volgt een deel van het programma.
Volgende SQL opdracht in het programma gebruik ik:

strMySql_zoekenOpId = "SELECT tbldrager.Id, tbldrager.Naam, tbldrager.Soort, tbldrager.Aantal, tbldrager.Formaat, tbldrager.Kostprijs, tbldrager.LEVERANCIER, tbldrager.Verpakking " & _
"FROM tbldrager " & _
"WHERE (((tbldrager.Id)= [Formulieren]![frm_gegevensinvoer]![txtId])) " & _
"ORDER BY tbldrager.Naam DESC"

Dim myCnn As ADODB.Connection
Set myCnn = CurrentProject.Connection
Dim Sqltabeldrager As New ADODB.Recordset
Sqltabeldrager.ActiveConnection = myCnn
Sqltabeldrager.Open strMySql_zoekenOpId, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
Sqltabeldrager.MoveFirst

De fout is het rode gedeelte.

Het sql deel werkt in het weergavevenster van access 2010.
Het sql deel is dus juist.
Vervang ik het rode deel door een getal vb. 14 dan werkt het ook.
Ik zou graag werken met een textvak waar ik vervolgens de ID-waarde kan in opgeven.
Dit textvak noemt txtId. Een tekstvak is altijd een string. Ik heb een vermoeden dat het daar fout loopt.

Hoe los ik dat op?

mvg.

thirty1234
10 December 2012, 22:50
Hallo,

De oplossing is de volgende:
"WHERE (((tbldrager.Id)= [Formulieren]![frm_gegevensinvoer]![txtId])) " & _

moet zijn
"WHERE (((tbldrager.Id)= " & [Formulieren]![frm_gegevensinvoer]![txtId] & ")) " & _

Bovenstaande fout is opgelost:
In het bovenstaand programma zit ik ook nog met de fout 2465 namelijk "kan het veld |1 niet vinden waarnaar wordt verwezen in de expressie"

Hoe los ik dat op?

mvg.

thirty1234
11 December 2012, 18:24
Beste,

"WHERE (((tbldrager.Id)= " & [Formulieren]![frm_gegevensinvoer]![txtId] & ")) " & _

Moet zijn

"WHERE (((tbldrager.Id)= " & [Forms]![frm_gegevensinvoer]![txtId] & ")) " & _

Het nederlandse woord formulieren moet worden vervangen door het engelse Forms.
Nu werkt bovenstaande code wel.

Gewoon de SQL- code met copy en paste bewerken werkt in dit geval dus niet.

Hier mag een slotje op