Updatequery tekst/numeriek veld

Status
Niet open voor verdere reacties.

Nico84

Gebruiker
Lid geworden
21 jul 2011
Berichten
191
Ik heb de volgende updatequery.
Code:
DoCmd.RunSQL "UPDATE tbl_Debiteuren SET tbl_Debiteuren.IncassoRekeningnr ='" & Me.txtIncassoRekeningnr & "' WHERE tbl_Debiteuren.ParentID =" & Me.txtDebiteurOrganisatieID & ";"

Als het txtIncassoRekeningnr ingevuld is werkt de update query zonder problemen.

Bij een bepaalde keuze op mijn formulier wordt het veld txtIncassoRekeningnr leeggemaakt door me.txtIncassoRekeningnr = ""
Voer ik dan de query uit krijg ik de melding:
Niet alle records in de bijwerkquery kunnen worden bijgewerkt
80 velden ten gevolge van een fout bij het converteren van het type.

Vervolgens zijn wel alle velden netjes leeggemaakt. Dus hij werkt wel.

Nu heb ik al van alles geprobeerd omdat het veld incassoRekeningnr in de tabel debiteuren van het type numeriek is.
-Enkele aanhalingstekens weggehaald
-NZ(me.txtIncassoRekeningnr) of Nz(me.txtIncassoRekeningnr, null)
-Veld leegmaken door me.txtIncassoRekeningnr = Null
Deze resulteren allemaal in Fout 3144 tijdens uitvoering. De Instructie UPDATE bevat een syntaxfout

-------------
De onderstaande update query werkt zonder problemen, maar snap 1 ding niet.
Code:
DoCmd.RunSQL "UPDATE tbl_Debiteuren SET tbl_Debiteuren.FactuurLandID ='" & Me.cboFactuurLandID & "' WHERE tbl_Debiteuren.ParentID =" & Me.txtDebiteurOrganisatieID & ";"
Het veld LandID is van het type numeriek

Deze query werkt met de enkele aanhalingstekens zonder melding. Dus als er een Land gekozen wordt en bij het leegmaken van het veld door "".
Haal ik de enkele aanhalingstekens weg dan werkt de query wel als een land gekozen wordt, maar wordt het veld leeggemaakt door "" dan geeft de query wederom een foutmelding.

Hoe ga je in een updatequery met lege velden en numerieke velden om?
 
Er is natuurlijk geen enkele noodzaak om een numeriek veld als een tekstveld te behandelen; waarom zou je dat ook doen?
Code:
DoCmd.RunSQL "UPDATE tbl_Debiteuren SET IncassoRekeningnr =" & Me.txtIncassoRekeningnr & " WHERE ParentID =" & Me.txtDebiteurOrganisatieID
zou dus prima moeten werken. Maak er een gewoonte van om tekstvelden als tekst te behandelen, en numerieke als numeriek.
Of desnoods:
Code:
DoCmd.RunSQL "UPDATE tbl_Debiteuren SET IncassoRekeningnr =" & Nz(Me.txtIncassoRekeningnr,0) & " WHERE ParentID =" & Me.txtDebiteurOrganisatieID
 
Ik begrijp dat je velden moet behandelen hoe ze zijn.

Code:
DoCmd.RunSQL "UPDATE tbl_Debiteuren SET IncassoRekeningnr =" & Me.txtIncassoRekeningnr & " WHERE ParentID =" & Me.txtDebiteurOrganisatieID

Heb deze query geprobeerd en werkt voor de helft:
Als ik in me.txtIncassoRekeningnr iets invul dan werkt de query
Als er in me.txtincassoRekeningnr een waarde staat en maak deze leeg met de backspace. Geef de query wel een foutmelding. (syntaxisfout)


Het tweede voorstel werkt wel volledig. Nz(Me.txtIncassoRekeningnr,0).

Maar wil eigenlijk geen nulletjes in mijn tabel :d:d.
Waarom kan een numeriek veld dan niet leeg zijn?
 
Dit is een oplossing die wel werkt. Kan hij korter?:)

Code:
If Nz(Me.txtIncassoRekeningnr) <> varIncassoRekeningnr Then
     If Me.txtIncassoRekeningnr = "" Or IsNull(Me.txtIncassoRekeningnr) Then
         DoCmd.RunSQL "UPDATE tbl_Debiteuren SET tbl_Debiteuren.IncassoRekeningnr = Null WHERE tbl_Debiteuren.ParentID =" & Me.txtDebiteurOrganisatieID
     Else
         DoCmd.RunSQL "UPDATE tbl_Debiteuren SET tbl_Debiteuren.IncassoRekeningnr =" & Me.txtIncassoRekeningnr & " WHERE tbl_Debiteuren.ParentID =" & Me.txtDebiteurOrganisatieID
     End If
End If
 
Dit: Nz(Me.txtIncassoRekeningnr,Null)
 
Sorry OctaFish, had ik ook al geprobeerd.
Nz(Me.txtIncassoRekeningnr,Null) werkt ook niet.

Ik heb het maar aangepast met de if functie
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan