ADO 2.7 onder VB.Net met connectionstring error

Pagina: 1
Acties:
  • 56 views sinds 30-01-2008

  • Y3PP3R
  • Registratie: Oktober 2002
  • Laatst online: 11-08 19:48
Ik snap niets van de nieuwe ado.net, dus heb ik maar een reference toegevoegd naar de ADO 2.7 lib. In mijn code moet ik records overzetten van de ene tabel naar de andere. Dat doe ik door eerst een nieuw record te maken in de ene tabel en die te vullen met de gegevens van een record uit de andere, om die daarna te verwijderen.

Maar daar gaat het in de eerste instantie niet om: Ik krijg een error bij mijn connection en ik weet niet hoe ik het probleem moet oplossen:

"An unhandled exception of type 'System.NullReferenceException' occurred in FacCheck.exe

Additional information: Object reference not set to an instance of an object. "

In de code hieronder worden de regels door het forum afgebroken, ze kloppen wel in mijn programma.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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.Open(connString) 
Dim rs1 As 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 & "')" 
conn.Execute(myInsertQuery) 
myDeleteQuery = "DELETE FROM registraties WHERE Nummering='" & rs1.Fields(0).Value & "'" 
conn.Execute(myDeleteQuery) 
Loop 
conn.Close() 
End If


Wie kan mij helpen?

[ Voor 12% gewijzigd door Y3PP3R op 03-01-2003 00:24 ]


Verwijderd

Je maakt geen objecten aan, je definieert ze alleen maar.
Dim objX as New ClassName

[ Voor 2% gewijzigd door Verwijderd op 03-01-2003 00:12 . Reden: -d +t ]


  • Y3PP3R
  • Registratie: Oktober 2002
  • Laatst online: 11-08 19:48
hoe bedoel je? voorbeeld in mijn geval?

btw: bij de error markeert hij de regel conn.open...

[ Voor 42% gewijzigd door Y3PP3R op 02-01-2003 23:32 ]


Verwijderd

Je mist een stukje dus

Dim conn As ADODB.Connection
set conn=new ADODB.Connection
conn.Open(connString)

idem voor je reccordset

[ Voor 11% gewijzigd door Verwijderd op 02-01-2003 23:38 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:55

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 02 January 2003 @ 23:34:
Je mist een stukje dus

Dim conn As ADODB.Connection
set conn=new ADODB.Connection
conn.Open(connString)
Set?

Dim conn As ADODB.Connection = new ADODB.Connection

oid moet ook voldoen...

Maar ga je niet ontzettend moeilijk doen? OleDB Dataprovider is veel eenvoudiger in gebruik.

En wil je voortaan [code][/code]-tags gebruiken?

[ Voor 103% gewijzigd door gorgi_19 op 02-01-2003 23:43 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

dim con as new adodb.connection doet het ook wel.

Tis maar hoe je't aanleert he :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:55

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 02 januari 2003 @ 23:45:
dim con as new adodb.connection doet het ook wel.

Tis maar hoe je't aanleert he :)
Klopt; beiden hoort als het goed is qua snelheid niet uit (meer) te maken. Alleen Set hoorde er volgens mij niet in thuis.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Y3PP3R
  • Registratie: Oktober 2002
  • Laatst online: 11-08 19:48
leg die oledb dataprovider maar uit... ik snap niets van de msdn library en bovendien doet de code zo toch wat ik verlang?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:55

gorgi_19

Kruimeltjes zijn weer op :9

Y3PP3R schreef op 02 januari 2003 @ 23:50:
leg die oledb dataprovider maar uit... ik snap niets van de msdn library en bovendien doet de code zo toch wat ik verlang?
* gorgi_19 is lui en gaat geen tutorial schrijven... :+

http://www.c-sharpcorner.com/Tutorials/DataProvidersAN.asp
Google

En je code doet het? Ja, ach... Er zijn meerdere wegen die naar Rome leiden. In principe kan ik ook nog steeds met ASP / VBScript werken, in combinatie met het mixen van code en layout.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

OleDb dataprovider is een onderdeel van ADO.Net ... en ik moet eerlijk gezegd ook nog wennen daaraan, dus kan me voorstellen dat je het nog even wilt houden bij ADO 2.x

  • Y3PP3R
  • Registratie: Oktober 2002
  • Laatst online: 11-08 19:48
nog een vraag: wat is er mis met mijn insert query?

Verwijderd

Print je query uit, voer hem met de hand uit op je database, kijk naar de foutmelding en los het op .... kortom, gewoon debuggen!

Edit:
Overigens, ik vind het netter om een 'read' flag in de tabel om te zetten van false naar true dan data te verhuizen van 1 tabel naar een ander.

Edit 2:
Sowieso, de code van die loop gaat helemaal mis. Je hebt geen loop nodig voor 1 .Find, en deze loop gaat oneindig door (geen .MoveNext)

[ Voor 61% gewijzigd door Verwijderd op 03-01-2003 00:08 ]


  • Y3PP3R
  • Registratie: Oktober 2002
  • Laatst online: 11-08 19:48
iemand die mij beter kan helpen?

  • Y3PP3R
  • Registratie: Oktober 2002
  • Laatst online: 11-08 19:48
"INSERT INTO uitgelezen (Datum, Naam, Plaats, Object, Taken, Afstand, Duur) VALUES('1-1-03', 'Ikke', 'Thuis', 'CHeck', 'programmeren', '0', '120')"

Ik heb ff de waarden handmatig ingevoerd. Als ik in access een query aanmaak met deze regel, werkt hij perfect...

waarom kan ik hem niet in mijn code gebruiken?

[ Voor 45% gewijzigd door Y3PP3R op 03-01-2003 00:14 ]


Verwijderd

Waarschijnlijk is van de kolom Datum het type Date, en in dat geval moet je er geen single quotes omheen zetten, maar #jes.

Edit:
En een spatie tussen VALUES en ( zal ook helpen.

Edit 2:
Welke foutmelding krijg je dan als je je code uitvoert?

[ Voor 36% gewijzigd door Verwijderd op 03-01-2003 00:16 ]


  • Y3PP3R
  • Registratie: Oktober 2002
  • Laatst online: 11-08 19:48
de #'en helpen niet. Bovendien is movenext toch niet nodig? De cursor komt op de plek te staan van het gevonden record, die daarna wordt verwijderd. Als alle records verwijderd zijn komt de cursor bij eof.

De error is dat de sql van de insert query een syntaxfout bevat.

Ik heb nu de query aangepast tot dit:
code:
1
myInsertQuery = "INSERT INTO uitgelezen (Datum, Naam, Plaats, Object, Taken, Afstand, Duur) VALUES (#1-1-03#, 'Ikke', 'Thuis', 'CHeck', 'programmeren', '0', '120')"


de oorspronkelijke heb ik ff uitgeschakeld met een commentteken ervoor (')

[ Voor 73% gewijzigd door Y3PP3R op 03-01-2003 00:29 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:55

gorgi_19

Kruimeltjes zijn weer op :9

Wat is het kolomtype van afstand? Tekst? Of stiekem toch numeriek?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

een goede tip, lees eerst eens een goed boek met een basis ado.net :)

zo moeilijk is het niet hoor...

  • Y3PP3R
  • Registratie: Oktober 2002
  • Laatst online: 11-08 19:48
Ik moet volgende week m'n programma af hebben, de basis VB lukt wel, maar de Database dingen niet. De tijdsperiode is te kort voor een boek VB.Net (ik heb eerst VB6 gebruikt + mobileVB voor pocketpc).

Wil iemand mij ff een plezier doen en de code schrijven die alle records die aan een waarde voldoen van de ene tabel naar een andere verplaatst? Of eerst de info kopieert en dan de oude records verwijdert?

DB = c:\werkinfo.mdb (ODBC DNS=werkinfo)

tabel waar uitgelezen moet worden = registraties
(Nummering=autonummering, Datum=datum/tijd, Naam=tekst, Plaats=tekst, Object=tekst, Taken=tekst, Afstand=numeriek, Duur=nummeriek)

tabel waar info naar toe moet = uitgelezen
(Datum=datum/tijd, Naam=tekst, Plaats=tekst, Object=tekst, Taken=tekst, Afstand=numeriek, Duur=nummeriek)

De records die overgezet moeten worden moeten voldoen aan de voorwaarde dat object='PH-HWH'

Vast heel erg bedankt, ook namens Heli-Holland!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Y3PP3R schreef op 03 January 2003 @ 15:53:
Wil iemand mij ff een plezier doen en de code schrijven die alle records die aan een waarde voldoen van de ene tabel naar een andere verplaatst? Of eerst de info kopieert en dan de oude records verwijdert?

lees de faq nog maar eens na

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.