26. maj 2005 - 07:26
Der er
38 kommentarer og 2 løsninger
sql UPDATE
Jeg har lidt problemer med dette VB scripts : If Check3.Value = 1 Then Text10.Text = "Ja" End If If Check3.Value = 0 Then Text10.Text = "Nej" End If On Error GoTo A Set con = New Adodb.Connection Set rs = New Adodb.Recordset 'Binder databasen til variablen mystring mystring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\F34945\Desktop\Program oversigt\Db\ProDB.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=True;Jet OLEDB:Database Password=test" con.Open (mystring) mysql = "UPDATE fish_info SET [Navn] = '" & Text6.Text & "', [Produktions] = '" & Text7.Text & "', [Produkt] = '" & Text8.Text & "',[Lokation] = '" & Text9.Text & "',[aktuel] = '" & Text10.Text & "', WHERE [Nr] = " & Text5.Text res.Open mysql, con, adOpenDynamic con.Execute mysql Do Until rs.EOF Loop A: Set rs = Nothing Set con = Nothing Er der kan en der kan se sig ud af hvorfor dette script bare ikke vil virke :-(
Annonceindlæg fra Academic Work Denmark A/S
Er lige rettet lidt mere i mysql string : mysql = "UPDATE program SET [Navn] = '" & Text6.Text & "', [Produktions] = '" & Text7.Text & "', [Produkt] = '" & Text8.Text & "', [Lokation] = '" & Text9.Text & "', [aktuel] = '" & Text10.Text & "' WHERE [Nr] = '" & Text5.Text & "'"
prøv lige at forklar lidt mere om hvori problemet ligger. Er det updaten af databasen eller vil scriptet ikke udføres og hvilken fejl får du? /hiks
Prøv at udskrive din SQL på skærmen før du udføre dem - denne slags problemer skyldes meget til at der står noget helt andet i SQL-strengen end det man forventede. PS: Du kan sagtens slette din do-loop; Den har absolut ingen funktion i dette tilfælde.
ok læste lige overskriften på dit indlæg... SQL updaten... :o) Godt har alle dine textboxes værdier - det kan forårsage fejl i nogen tilfælde hvis du indsætter tomme værdier i databaser, hvis du ikke har tilladt dette i databasen såkaldte Null-værdier. og hvis dit [nr] er et tal kan det være een fordel at gøre sådan: WHERE [Nr] = " & Clng(Text5.Text) /hiks
Min kode ser nu sådan ud : Set con = New Adodb.Connection Set rs = New Adodb.Recordset 'Binder databasen til variablen mystring disd = App.Path & "\DB\ProDB.mdb" mystring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & disd & ";Mode=ReadWrite|Share Deny None;Persist Security Info=True;Jet OLEDB:Database Password=dkdnrsi" con.Open (mystring) mysql = "UPDATE program SET [Navn] = '" & Text6.Text & "', [Produktions] = '" & Text7.Text & "', [Produkt] = '" & Text8.Text & "', [Lokation] = '" & Text9.Text & "', [aktuel] = '" & Text10.Text & "' WHERE [Nr] = & Clng(Text5.Text)" Set rs = Nothing Set con = Nothing Alle Text bokse har værdier og jeg kan sagtens skrive fra dem til databasen... problemet er først når jeg skal køre selve update sætningen så sker der intet ... Har forresten fjernet do-until/Loop sætningen for lang tid siden ...
prøv: mysql = "UPDATE program SET [Navn] = '" & Text6.Text & "', " & _ "[Produktions] = '" & Text7.Text & "', [Produkt] = '" & Text8.Text & "', " & _ "[Lokation] = '" & Text9.Text & "', [aktuel] = '" & Text10.Text & "' " & _ "WHERE [Nr] = " & CLng(Text5.Text) /hiks
Nixum bixum ... den vil bare ikke ... hvis i ikke lige vidste det så er den en access database i 2000 format ..
Prøv at udskrive SQL-sætningen til skærmen før at du udføre den. Post resultatet her sådan at vi kan se den.
Og hvordan vil du lige have at jeg skal få den til det .... vil gerne lige se et eksemple ...
Nu ved jeg jo altså intet om hvorvidt det er en console-app, en windows-app eller noget helt 3. du er ved at udvikle. Men - når jeg nu gætter på at det er en windows-app - så kunne du jo f.eks. gøre det vha.: MsgBox(mysql)
I teksten står der VB... der er en standart applicantion til windows i Visual Basic
Ikke for at splitte hår, men i teksten står der "VB Scripts" og det er altså ikke helt det samme som "Visual Basic".
hehe ok ... men ... hvis jeg har skrevet 3 i NR så udskriver den [Nr] = '3'
Var egentlig hvad jeg forventede
Hvis Nr er et talfelt i din DB så skal der *ikke* pinger rundt om 3-tallet.
men hvordan er det lige der kommer pinger omkring det med den sql du har pastet ind? Du indtaster ikke manuelt de pingere ind vel. pinger = ' /hiks
nej det gør jeg ikke men den udskriver korrekt...
Kan vi ikke få hele SQL-sætningen at se? - altså den du får ud på skærmen.
26/05-2005 10:08:13> Der var ikke pinger i det oprindelige spørgsmål, men de kom ind i revideringen 26/05-2005 07:58:35.
men har du prøvet at paste det ind over din nuværende string fra indlægget: 26/05-2005 09:18:18 ? fordi der er fejl i det du selv pastede ind: 26/05-2005 09:11:41 mit gæt er at du ikke får et match i din WHERE del pga pingerne eller at der ikke er nogle poster der har nr. 3 eksempelvis. /hiks
Ja jeg har ekpermenteret en del.. men jeg tager lige et screenshot til jer så...
okay hiks .... jeg burger den mysql string fra 9:18:18 ...
Det ser helt rigtigt ud. Så er der umiddelbart ikke andre fejlmuligheder end at du slet ikke har nogen post som har Nr=3 i program-tabellen din database.
okay vi er rimelig blinde :o) Set con = New Adodb.Connection Set rs = New Adodb.Recordset 'Binder databasen til variablen mystring disd = App.Path & "\DB\ProDB.mdb" mystring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & disd & ";Mode=ReadWrite|Share Deny None;Persist Security Info=True;Jet OLEDB:Database Password=dkdnrsi" con.Open (mystring) mysql = "UPDATE program SET [Navn] = '" & Text6.Text & "', " & _ "[Produktions] = '" & Text7.Text & "', [Produkt] = '" & Text8.Text & "', " & _ "[Lokation] = '" & Text9.Text & "', [aktuel] = '" & Text10.Text & "' " & _ "WHERE [Nr] = " & CLng(Text5.Text) rs.open sql, con 'du mangler at udføre sql'en Set rs = Nothing Set con = Nothing /hiks
Hov, jeg kan se at din tabel har ændret navn fra "fish_info" til "program" på et eller andet tidspunkt mellem din første og din anden post?
Der var da en "con.Execute mysql" i den første post.
hmm det vil den ikke være med til .... se selv ...
http://www.xcc.dk/test2.JPG og hvis jeg køre debug giver den rs.open sql, con skylden...
Er du sikker på at alle dine felter i databasen er af typen Tekst? F.eks. kunne det jo meget vel tænkes at "Produktions" - som jo angiver et årstal - er af en eller anden taltype i stedet. Hvis dette er tilfældet så vil Access bestemt brokke sig over at du har pinger rundt om dette. Måske er feltet "Produkt" også et tal?
Sorry min fejl Produktions er number !!
og NR er jo selvfølgelig primær nægle og auto
Fjern pingerne rundt om alle tal-felter og lad os så se om det ikke hjælper på Access' samarbejdsvilje.
Det der er jo den gamle fejl - den forsvinder sikkert når du fjerner de pinger.
Set con = New Adodb.Connection Set rs = New Adodb.Recordset 'Binder databasen til variablen mystring disd = App.Path & "\DB\ProDB.mdb" mystring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & disd & ";Mode=ReadWrite|Share Deny None;Persist Security Info=True;Jet OLEDB:Database Password=dkdnrsi" con.Open (mystring) mysql = "UPDATE program SET [Navn] = '" & Text6.Text & "', " & _ "[Produktions] = " & Text7.Text & ", [Produkt] = '" & Text8.Text & "', " & _ "[Lokation] = '" & Text9.Text & "', [aktuel] = '" & Text10.Text & "' " & _ "WHERE [Nr] = " & CLng(Text5.Text) con.Execute(mysql) Set con = Nothing
I er da for seje ;D nu virker det .. svar please
Tusind tak for jeres kanone indsæts !!! tro mig den har virkeligt iriteret mig den update sætning ;)
Kurser inden for grundlæggende programmering