21. januar 2005 - 17:28
Der er
16 kommentarer og 1 løsning
Problemer med at indsætte i access database
Hej Jeg har oprettet en databaseadgang, og fået det til at virke så jeg kan hente et objekt i tabellen. Samtidig med har udviklingsværktøjet autogeneret en insert command, og er i tvivl om hvordan man denne skal bruge, og om man overhovedet kan bruge den... Ser ud som nedenstående: Me.OleDbInsertCommand1.CommandText = "INSERT INTO Kunder(ForNavn, EfterNavn, Adresse, PostNr, ByNavn, TelefonNr, MobilN" & _ "r, Fax, Email, BetalingId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" Me.OleDbInsertCommand1.Connection = Me.OleDbConnection1 Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("ForNavn", System.Data.OleDb.OleDbType.VarWChar, 50, "ForNavn")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("EfterNavn", System.Data.OleDb.OleDbType.VarWChar, 50, "EfterNavn")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Adresse", System.Data.OleDb.OleDbType.VarWChar, 50, "Adresse")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("PostNr", System.Data.OleDb.OleDbType.Integer, 0, "PostNr")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("ByNavn", System.Data.OleDb.OleDbType.VarWChar, 50, "ByNavn")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("TelefonNr", System.Data.OleDb.OleDbType.Integer, 0, "TelefonNr")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("MobilNr", System.Data.OleDb.OleDbType.Integer, 0, "MobilNr")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Fax", System.Data.OleDb.OleDbType.Integer, 0, "Fax")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Email", System.Data.OleDb.OleDbType.VarWChar, 50, "Email")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("BetalingId", System.Data.OleDb.OleDbType.Integer, 0, "BetalingId")) Vil gerne benytte insert commandoen ved tryk på en knap - knappen er oprettet. Håber nogen kan give mig et hint i den rigtige retning
Annonceindlæg fra DE-CIX
21. januar 2005 - 17:55
#1
OleDbInsertCommand1.ExecuteNonQuery
21. januar 2005 - 17:56
#2
Er der OleDbInsertCommand1 tilknyttet din connection ? Ellers først: OleDbInsertCommand1.Connection = dinconnection
21. januar 2005 - 18:00
#3
Jeg har godt nok prøvet lidt forskelligt, så jeg er lidt forvirret lige nu! Det giver følgende fejlmeddelelse: An unhandled exception of type 'System.InvalidOperationException' occurred in system.data.dll Additional information: ExecuteNonQuery requires an open and available Connection. The connection's current state is Closed.
21. januar 2005 - 18:03
#4
Jeg har prøvet at åbne forbindelse med Me.OleDbConnection1.Open()
21. januar 2005 - 18:05
#5
Hvis du har sat: OleDbInsertCommand1.Connection = OleDbConnection1 og kaldt: Me.OleDbConnection1.Open() så bør det virke.
21. januar 2005 - 18:09
#6
EFter jeg har åbnet den, så giver den følgende fejlmeddelse An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll Kan du bruge det til noget
21. januar 2005 - 18:11
#7
Dette er hvad der er blevet autogenereret udenfor min knap 'OleDbInsertCommand1 ' Me.OleDbInsertCommand1.CommandText = "INSERT INTO Kunder(ForNavn, EfterNavn, Adresse, PostNr, ByNavn, TelefonNr, MobilN" & _ "r, Fax, Email, BetalingId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" Me.OleDbInsertCommand1.Connection = Me.OleDbConnection1 Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("ForNavn", System.Data.OleDb.OleDbType.VarWChar, 50, "ForNavn")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("EfterNavn", System.Data.OleDb.OleDbType.VarWChar, 50, "EfterNavn")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Adresse", System.Data.OleDb.OleDbType.VarWChar, 50, "Adresse")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("PostNr", System.Data.OleDb.OleDbType.Integer, 0, "PostNr")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("ByNavn", System.Data.OleDb.OleDbType.VarWChar, 50, "ByNavn")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("TelefonNr", System.Data.OleDb.OleDbType.Integer, 0, "TelefonNr")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("MobilNr", System.Data.OleDb.OleDbType.Integer, 0, "MobilNr")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Fax", System.Data.OleDb.OleDbType.Integer, 0, "Fax")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Email", System.Data.OleDb.OleDbType.VarWChar, 50, "Email")) Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("BetalingId", System.Data.OleDb.OleDbType.Integer, 0, "BetalingId"))
21. januar 2005 - 18:13
#8
Og dette er hvor jeg vil indsætte Private Sub OpretButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpretButton3.Click Me.OleDbConnection1.Open() Me.OleDbInsertCommand1.Connection = OleDbConnection1 Me.OleDbInsertCommand1.CommandText = "INSERT INTO Kunder(ForNavn, EfterNavn, Adresse, PostNr, ByNavn, TelefonNr, MobilN" & _ "r, Fax, Email, BetalingId) VALUES ('Bent', 'Thomsen', 'Varde Landevej 40', 4534, 'Varde', 33333333, 33333333, 33333333, 'Bent@mail.dk',1 )" Me.OleDbInsertCommand1.Connection = Me.OleDbConnection1 Me.OleDbInsertCommand1.ExecuteNonQuery() End Sub
21. januar 2005 - 18:33
#9
Hm - den fejl meddelse siger jo ikke meget. Kan du udføre den INSERT direkte i Accees (eller hvilken database det nu er) ?
21. januar 2005 - 19:45
#10
Ja det ser ud til at virke fint... Jeg har første felt til autonummerering - Vil det ikke sige at den ikke skal med i SQL sætningen i programmet? Altså kundeId f.eks
21. januar 2005 - 19:59
#11
Et felt med autonummerering skal normalt ikke angives ved INSERT
21. januar 2005 - 20:05
#12
nej jeg kan ikke lige se hvad fejlen er - jeg prøver mig lige frem og vender tilbage...
21. januar 2005 - 20:54
#13
Jeg har nu fundet en fejl - når jeg bruger min sql sætning i access skal jeg stadig indsætte id nr selvom feltet står til autonummerering - Hvordan kan det hænge sammen?
21. januar 2005 - 21:06
#14
Det forstår jeg ikke. Hvis man angiver feltnavnene, så bør et auto increment felt ikke skulle angives.
22. januar 2005 - 09:24
#15
Jeg ved ikke hvad der har været galt... Jeg er helt sikker på at problemet først var jeg ikke brugte kommandoen: OleDbInsertCommand1.ExecuteNonQuery Da jeg indsatte den virkede det godt nok heller ikke, men efter at have flyttet lidt rundt på noget kode virker det. Synes bare ikke det jeg har gjort burde gøre nogen forskel! Jeg har indsat en .close() på den forbindelse jeg har åben... Ved ikke hvad der har været galt, men hvis du lige vil smide et svar, så siger jeg tak for hjælpen! VH Jesper
22. januar 2005 - 09:26
#16
Det vigtigste er at det virker nu
22. januar 2005 - 09:27
#17
Det jo det - tak for det
Kurser inden for grundlæggende programmering