[VB.Net] Overzetten van records

Pagina: 1
Acties:

  • Y3PP3R
  • Registratie: Oktober 2002
  • Laatst online: 11-08 19:48
Mijn programma moet records van de ene naar de andere tabel verplaatsen. Ik had zelf bedacht om eerst een nieuw record te maken in de 2e tabel en de gegevens van het record uit de eerste in te voegen, om daarna het record uit de 1e tabel te verwijderen.

Nu ik overgestapt ben van 6.0 naar .Net loop ik tegen het probleem aan van ADO.Net: dat ken ik nog niet. Ik heb daarom ADO 2.7 geïmporteerd en de volgende code geschreven, maar mijn Insert-query geeft een error:


An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in FacCheck.exe

Additional information: De instructie INSERT bevat een syntaxisfout.


De code is als volgt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        If MsgBox("records verwerken?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
            Dim connString As String
            connString = "Provider=Microsoft.Jet.OLEDB.4.0;data source='H:\creaties\pda\check\werkinfo.mdb'"
            Dim conn As ADODB.Connection
            conn = New ADODB.Connection
            conn.Open(connString)
            Dim rs1 As ADODB.Recordset
            rs1 = New ADODB.Recordset
            rs1.Open("registraties", conn, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
            rs1.MoveFirst()
            Dim myInsertQuery As String
            Dim myDeleteQuery As String
            Do While Not rs1.EOF
                rs1.Find("object='PH-HWH'")
                myInsertQuery = "INSERT INTO uitgelezen (Datum, Naam, Plaats, Object, Taken, Afstand, Duur) VALUES (#" & rs1.Fields(1).Value & "#, '" & rs1.Fields(2).Value & "', '" & rs1.Fields(3).Value & "', '" & rs1.Fields(4).Value & "', '" & rs1.Fields(5).Value & "', " & rs1.Fields(6).Value & ", " & rs1.Fields(7).Value & ")"
                MsgBox(myInsertQuery)
                conn.Execute(myInsertQuery)
                myDeleteQuery = "DELETE FROM registraties WHERE Nummering='" & rs1.Fields(0).Value & "'"
                conn.Execute(myDeleteQuery)
            Loop
            conn.Close()
        End If


Ik heb al handmatig waarden ingevuld en dan blijft 'ie een fout geven, terwijl ik in access een query heb gemaakt en daar dit heb ingeplakt en dat werkte foutloos.

Informatie over mijn tabellen:

registraties: (Nummering=autonummering, Datum=datum/tijd, Naam=tekst, Plaats=tekst, Object=tekst, Taken=tekst, Afstand=nummeriek, Duur=nummeriek)

uitgelezen: (Datum=datum/tijd, Naam=tekst, Plaats=tekst, Object=tekst, Taken=tekst, Afstand=nummeriek, Duur=nummeriek)

de records van tabel 'registraties' waarbij het veld 'object' de waarde 'PH-HWH' heeft moeten in 'uitgelezen' geplaatst worden.

Ik weet dat ik hier al eerder een topic over heb gemaakt, dat is gesloten, maar het lijkt mij zo wat netter.

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Tip gebruik Ado.net. Minder proggen en sneller ....

Verwijderd

Zoals in je vorige topic al (indirect) gevraagd was: wat zijn de data types van de kolommen in de tabel uitgelezen je database?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:14

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 03 January 2003 @ 19:22:
Zoals in je vorige topic al (indirect) gevraagd was: wat zijn de data types van de kolommen in de tabel uitgelezen je database?
Y3PP3R in "ADO 2.7 onder VB.Net met connectionstrin"
tabel waar uitgelezen moet worden = registraties
(Nummering=autonummering, Datum=datum/tijd, Naam=tekst, Plaats=tekst, Object=tekst, Taken=tekst, Afstand=numeriek, Duur=nummeriek)
:P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Over het hoofd gezien ... mijn excuses.

Tip:
- als het kolomtype tekst (oid) is, zet single quotes om de waarde
- als het kolomtype een getal is, zet dan alleen de waarde neer
- als het kolomtype een datum is, zet dan #jes er omheen (alleen Access en SQL Server, geloof ik)

Succes :)