dbaccess 2003 probleem bij splitsen db

Status
Niet open voor verdere reacties.

maurann

Gebruiker
Lid geworden
22 jul 2007
Berichten
117
Splitste een db en nu werkt het formulier niet meer.
ms visual basic heeft fout 3219 aan in volgende code:
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("Klantenkaart", dbOpenTable)
With rst
.AddNew
.Fields("Klantnummer") = Me![Klantnummer]
.Fields("OrderDatum") = Me![txtDat]
.Fields("Aankoopbedrag") = Me![txtBedrag]
.Update
End With
rst.Close
Set db = Nothing
Set rst = Nothing

Waar zou 't probleem kunnen liggen?

In afwachting van hulp,
groeten,
M.
 
Tsja fout 3219 is inderdaad een probleem. Als het nou fout 13 was dan wist ik het wel of fout 97. Die zijn makkelijk. Maar als fout 3219 krijgt dan mag je van geluk spreken dat je nog kan internetten!

Met andere woorden: wat is fout 3219?

Waarschijnlijk kan de tabel Klantenkaart niet gevonden worden. In je applicatie (FE) moet je je tabellen koppelen aan je database (BE).

Als je die fout blijft krijgen ben ik toch wel benieuwd wat die betekend.

HTH:D
 
Bedankt voor de reactie Guus,

maar hoe verwijs ik in de code naar mijn BE ?:confused::confused:


In de applicatie zijn de tabellen in de FE gekoppeld aan de BE.

M
 
Laatst bewerkt:
Bedankt voor de reactie Guus,

maar hoe verwijs ik in de code naar mijn BE ?:confused::confused:


In de applicatie zijn de tabellen in de FE gekoppeld aan de BE.

M

Dat doe je op precies de zelfde manier als bij een niet geslitste database.
Je moet ook maar nog eens overwegen waarom je de splitsing hebt gedaan.
Niet altijd levert dit de beoogte voordelen op. Zeker niet in een server omgeving.

In je FE bestand ook nog een goed nakijken if de koppelingen werken.

Wim
 
WimenBeer,
De koppelingen zijn gemaakt en ok.
Het voordeel van de gesplitste db is voor mij de verdere ontwikkeling van de FE
terwijl gebruikers verder de BE blijven gebruiken.
Wat bedoeld u met uw bemerking dat een gesplitste db niet altijd de beoogde voordelen
opleverd?

Guus,
de reactie die ik krijg:
microsoft visual basic
fout 3219 tijdens uitvoering:
ongeldige bewerking.

Foutopsporing:
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("Klantenkaart", dbOpenTable)
With rst
.AddNew
.Fields("Klantnummer") = Me![Klantnummer]
.Fields("OrderDatum") = Me![txtDat]
.Fields("Aankoopbedrag") = Me![txtBedrag]
.Update
End With
rst.Close
Set db = Nothing
Set rst = Nothing


M.
 
Laatst bewerkt:
Je laat net een regel te weinig tekst zien. Hoe heet de functie die je laat zien?

Ik heb je procedure opgenomen in een form.
alhoewel de DAO recordset default is, lijkt er niets fout te zijn.

Kijk maar in mijn sample database. Tabelnaam is anders maar de rest is hetzelfde.
Ik weet niet hoe jij het gedaan hebt, maar zo zou het moeten!

HTH:D
 

Bijlagen

WimenBeer,
De koppelingen zijn gemaakt en ok.
Het voordeel van de gesplitste db is voor mij de verdere ontwikkeling van de FE
terwijl gebruikers verder de BE blijven gebruiken.
Wat bedoeld u met uw bemerking dat een gesplitste db niet altijd de beoogde voordelen
opleverd?

Ik heb ondervonden dat ik een server omgeving er een ontzettende vertraging ontstaat.
Het lezen van de BE kost behoorlijk wat IO.
Daarom he ik e.e.a. terug gedraaid en een .mde gemaakt waar iedere gebruiker me werkt.
Nieuwe ontwikkelingen doe ik gewoon een test .mdb.

Wim
 
Dit is de volledige syntaxis:

Private Sub butAankoopBevestiging_Click()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("Klantenkaart", dbOpenTable)
With rst
.AddNew
.Fields("Klantnummer") = Me![Klantnummer]
.Fields("OrderDatum") = Me![txtDat]
.Fields("Aankoopbedrag") = Me![txtBedrag]
.Update
End With
rst.Close
Set db = Nothing
Set rst = Nothing

lstKlantenkaart.Requery

txtBedrag = ""
txtDat = ""

strSQL = "Update Klant set txtKortingbdr ='" & Me![txtKortingBdr] & "' where Klantnummer = " & _
Me.Klantnummer

DoCmd.SetWarnings (False)
DoCmd.RunSQL strSQL
DoCmd.SetWarnings (True)


Klantnummer.SetFocus
End Sub

Wat betreft uw voorbeeld:
wat bedoel je met dao default &
bij mij lukt een update in uw voorbeeld niet
microsoft vb geeft aan dat de opgegeven wijzigingen aan de tabel niet zijn aangebracht
omdat zij dubbele waarden zouden opleveren voor de index, primaire sleutel of relatie. etc...
 
Dit is de volledige syntaxis:

Private Sub butAankoopBevestiging_Click()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("Klantenkaart", dbOpenTable)
With rst
.AddNew
.Fields("Klantnummer") = Me![Klantnummer]
.Fields("OrderDatum") = Me![txtDat]
.Fields("Aankoopbedrag") = Me![txtBedrag]
.Update
End With
rst.Close
Set db = Nothing
Set rst = Nothing

lstKlantenkaart.Requery

txtBedrag = ""
txtDat = ""

strSQL = "Update Klant set txtKortingbdr ='" & Me![txtKortingBdr] & "' where Klantnummer = " & _
Me.Klantnummer

DoCmd.SetWarnings (False)
DoCmd.RunSQL strSQL
DoCmd.SetWarnings (True)


Klantnummer.SetFocus
End Sub

Wat betreft uw voorbeeld:
wat bedoel je met dao default &
bij mij lukt een update in uw voorbeeld niet
microsoft vb geeft aan dat de opgegeven wijzigingen aan de tabel niet zijn aangebracht
omdat zij dubbele waarden zouden opleveren voor de index, primaire sleutel of relatie. etc...

Waarom gebruik je twee verschillende manieren om een UPDATE van een tabel te doen.
Code:
strSQL = "Update Klant set txtKortingbdr ='" & Me![txtKortingBdr] & "' where Klantnummer = " & _
            Me[B][COLOR="Red"]![/COLOR][/B].Klantnummer
Is de makelijkste manier (maar zonder fout).
Deze manier kan je ook voor je eerste UPDATE doen.
Als het een nieuw record betreft dan maak je gewoon gebruik van INSERT INTO
Als het een UPDATE van een bestaand record besteft maak je gebruik van UPDATE.

Wellicht ben je dan je eerst probleem uit post #1 kwijt.

Wim
 
Gracias

't is gelukt met jullie hulp (code aangepast volgens advies),
hoewel ik me nog steeds afvraag waarom de code niet werkt na de splitsing.

Maar 't belangrijkste is dat 't werkt!

Gracias Amigos:thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan