Wegschrijf fouten in de database

Status
Niet open voor verdere reacties.

harolda1980

Gebruiker
Lid geworden
7 aug 2007
Berichten
488
Ik schrijf de gegevens weg in een database alleen nu is er de mogelijkheid om gegevens niet in te vullen.

Maar nu krijg je de meldingen dat typen niet overeen komen. Mijn vraag hoe maak ik hier een goeie oplossing voor.

Hieronder de code voor het schrijven in de datebase!
De standaard waarde staat op ingesteld op NULL in de database.

Code:
Sub DbschrijvenMarketing()
Dim cnnMa As ADODB.Connection
Dim rstMA As ADODB.Recordset
Dim strCnn As String
Dim strSQL As String
Dim strProvider As String
           
        strdir = strconnect
        strSQL = "tbMarketing"
        strProvider = "Microsoft.Jet.OLEDB.4.0"
        strCnn = strdir & "\DBSalescom.mdb"
        Set cnnMa = New ADODB.Connection
            cnnMa.Provider = strProvider
            cnnMa.Open strCnn
        Set rstMA = New ADODB.Recordset
        rstMA.Open strSQL, cnnMa, adOpenDynamic, adLockOptimistic
        
            rstMA.AddNew
            rstMA!openingsattentie = cbMaattentie.Value
            rstMA!openingsattentieaantal = txtattentieaantal.Value
            rstMA!infomaat = cbMainfomaat.Value
            rstMA!persbericht = cbMapersbericht.Value
            
            rstMA!signing = cbvisual.Value
            rstMA!verlichting = chbVerlichting.Value
            rstMA!tafeldeco = chbTafeldeco.Value
            rstMA!tafeldecoaantal = txtTafeldeco.Value
            rstMA!decoratie = chbDecoratie.Value
            rstMA!aankleding = cbMaaankleding.Value
            rstMA!decotekst = txtdecotext.Value
            rstMA!Kleding = cbMakleding.Value
            rstMA!Kledingopmaat = cbMakledingom.Value
            
            rstMA!sitem = cbMaitem.Value
            rstMA!item1 = cbMaitem1.Value
            rstMA!item2 = cbMaitem2.Value
            rstMA!item3 = cbMaitem3.Value
            rstMA!vrijitem = cbMaitemvrij.Value
            
            rstMA!Welkomflyer = cbMaflyer.Value
            rstMA!enqueteform = cbMaenquete.Value
            rstMA!locatiebrochure = cbMabrochure.Value
            rstMA!koffiekaart = chbKoffiekaart.Value
            rstMA!waardebon = chbWaardebon.Value
            rstMA!bouwbord = chbBouwbord.Value
            rstMA!wervingsposter = chbwervingsposter.Value
            rstMA!kidsbox = chbKidsbox.Value
            rstMA!dispmaat = chbdisp.Value
            
            rstMA!Matekst = txtMarketing.Value
            rstMA.Update ' Exit conditie word hierdoor bereikt
        
        rstMA.Close
        cnnMa.Close
        Set rstMA = Nothing
        Set cnnMa = Nothing
End Sub
 
Je kunt eens kijken of deze constructie het doet:

Code:
            rstMA!signing = Nz(cbvisual.Value)

En anders (beetje flauwe oplossing)
Code:
        rstMA.AddNew
        On Error Resume Next
 
Daar zou je gelijk in kunnen hebben :)
Je kunt misschien met IsEmpty(...) checken op een lege cel, en in die gevallen een 0 of zo plaatsen.
 
Ja dat zo een optie zijn alleen moet je dit dan 300 keer toevoegen bij elke regel. Weet jij misschien een mooie kunstige optie die ook niet zo tijdrovend is?
 
Ik vermoed dat je nu denkt dat je de IsEmpty in je Excel gegevens moet doen; mijn voorstel zou zijn om het bij de recordset te doen.
Dus:
Code:
If IsEmpty(cbvisual.Value) then rstMA!signing = 0 Else rstMA!signing = cbvisual.Value
 
Mooie oplossing wel tijdrovend achteraf. Maar je zou ook beginnend bij het stuk waar je de database velden gaat vullen de volgende code kunnen zetten

Code:
Error resume next
 
En die oplossing had ik inderdaad ook al aangegeven ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan