Query omzetten in VBA

Status
Niet open voor verdere reacties.

LuckyFm

Gebruiker
Lid geworden
3 feb 2015
Berichten
91
Hallo allen,

ik heb een query gemaakt die op zich werkt maar ik zou hem graag in VBA omzetten maar copy/paste werkt niet.
Graag zou ik met een if then statement willen bepalen op er een record wordt toegevoegd of dat het bestaande record wordt bijgewerkt
Code:
If Not IsNull(DLookup("[Code]", "tblTotalen", "[Code] = '" & Me.cboCode.Column(2) & "'")) Then
' Hier wil ik de update query plaatsen
Dim code1 As String
Dim Prod1a As String
Dim Netto1 As String
Dim sqlAdd As String

code1 = Me.cboCode.Column(2)
Prod1a = Me.cboCode.Column(3)
Netto1 = Me.txtNetto


sqlAdd = "insert into tblTotalen(Code, Product, Netto) values('" & code1 & "', '" & Prod1a & "', '" & Netto1 & "');"
DoCmd.RunSQL sqlAdd
End If

Nu heb ik een keurige updatequery gemaakt die op zich werkt maar niet op deze plaats

Code:
UPDATE tblTotalen INNER JOIN tblRitten ON tblTotalen.Code=tblRitten.Weegcode SET tblTotalen.Netto = DSum("[Netto]","tblRitten")
WHERE (((tblTotalen.Code)=[tblRitten]![Weegcode]));

Het laatste deel wil ik graag zo hebben

Code:
WHERE (((tblTotalen.Code)= '" & Me.cboCode.Column(2) & "'"));

Kan iemand mij hierbij helpen??

Alvast bedankt.
 
Ik zie zo snel niet wat er verkeerd aan is. Tenzij Code een getal is, dan moeten de quootjes weg. En, maar dat doet Access in de query, een belachelijke hoeveelheid haakjes, die allemaal weg kunnen :).
 
Volgens mij zie ik toch het een en ander over het hoofd (Onkunde)

Bij mij is de hele syntax rood gekleurd dus kennelijk foutief

Code:
sqlUpd = UPDATE tblTotalen INNER JOIN tblRitten ON tblTotalen.Code = tblRitten.Weegcode SET tblTotalen.Netto = DSum("[Netto]","tblRitten")WHERE tblTotalen.Code)=Forms![frmRitLog]![cboCode].Column(2);

Ik heb werkelijk geen idee waar ik wel of juist geen comma's haakjes of wat dan ook moet plaatsen
 
Om te beginnen heb je, nu je de complete code hebt gepost (dus met de variabele erbij) de string niet als string gedefinieerd: de begin- en eindquote ontbreekt. Dan is de complete string dus fout. Daarnaast mag je in een string geen dubbele quoot gebruiken, want dat is een gereserveerd teken. Die moet je dus vervangen door een enkele. Dan krijg je iets als

Code:
sqlUpd = "UPDATE tblTotalen INNER JOIN tblRitten " _
    & "ON tblTotalen.Code = tblRitten.Weegcode " _
    & "SET tblTotalen.Netto = dSum('[Netto]', 'tblRitten') " _
    & "WHERE tblTotalen.Code=" & Me.cboCode.Column(2)

Of je doet het zo, dan ben je van het DSUM probleem af:
Code:
Dim dSom As Double
dSom = dSum("[Netto]", "tblRitten")
sqlUpd = "UPDATE tblTotalen INNER JOIN tblRitten " _
    & "ON tblTotalen.Code = tblRitten.Weegcode " _
    & "SET tblTotalen.Netto = " & dSom & " " _
    & "WHERE tblTotalen.Code=" & Me.cboCode.Column(2)

En daarnaast maak ik me sterk dat je Inner Join hier niet nodig is:
Code:
sqlUpd = "UPDATE tblTotalen SET Netto = " & dSom & "WHERE Code=" & Me.cboCode.Column(2)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan