Avatar billede xcc.dk Nybegynder
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 :-(
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 07:58 #1
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 & "'"
Avatar billede hiks Nybegynder
26. maj 2005 - 08:47 #2
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
Avatar billede nielle Nybegynder
26. maj 2005 - 08:49 #3
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.
Avatar billede hiks Nybegynder
26. maj 2005 - 08:54 #4
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
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 09:11 #5
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 ...
Avatar billede hiks Nybegynder
26. maj 2005 - 09:18 #6
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
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 09:25 #7
Nixum bixum ... den vil bare ikke ... hvis i ikke lige vidste det så er den en access database i 2000 format ..
Avatar billede nielle Nybegynder
26. maj 2005 - 09:29 #8
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.
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 09:33 #9
Og hvordan vil du lige have at jeg skal få den til det .... vil gerne lige se et eksemple ...
Avatar billede hiks Nybegynder
26. maj 2005 - 09:37 #10
debug.print mysql

/hiks
Avatar billede nielle Nybegynder
26. maj 2005 - 09:38 #11
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)
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 09:41 #12
I teksten står der VB... der er en standart applicantion til windows i Visual Basic
Avatar billede nielle Nybegynder
26. maj 2005 - 09:44 #13
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".
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 09:47 #14
hehe ok ... men ... hvis jeg har skrevet 3 i NR så udskriver den [Nr] = '3'
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 09:52 #15
Var egentlig hvad jeg forventede
Avatar billede nielle Nybegynder
26. maj 2005 - 09:59 #16
Hvis Nr er et talfelt i din DB så skal der *ikke* pinger rundt om 3-tallet.
Avatar billede hiks Nybegynder
26. maj 2005 - 10:08 #17
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
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 10:10 #18
nej det gør jeg ikke men den udskriver korrekt...
Avatar billede nielle Nybegynder
26. maj 2005 - 10:12 #19
Kan vi ikke få hele SQL-sætningen at se? - altså den du får ud på skærmen.
Avatar billede nielle Nybegynder
26. maj 2005 - 10:16 #20
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.
Avatar billede hiks Nybegynder
26. maj 2005 - 10:20 #21
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
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 10:21 #22
Ja jeg har ekpermenteret en del.. men jeg tager lige et screenshot til jer så...
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 10:27 #23
okay hiks .... jeg burger den mysql string fra 9:18:18 ...
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 10:27 #24
Her er så et screenshot ...
http://www.xcc.dk/test1.gif
Avatar billede nielle Nybegynder
26. maj 2005 - 10:32 #25
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.
Avatar billede hiks Nybegynder
26. maj 2005 - 10:32 #26
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
Avatar billede nielle Nybegynder
26. maj 2005 - 10:34 #27
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?
Avatar billede nielle Nybegynder
26. maj 2005 - 10:36 #28
Der var da en "con.Execute mysql" i den første post.
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 10:42 #29
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...
Avatar billede nielle Nybegynder
26. maj 2005 - 10:47 #30
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?
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 10:49 #31
Sorry min fejl Produktions er number !!
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 10:49 #32
og NR er jo selvfølgelig primær nægle og auto
Avatar billede nielle Nybegynder
26. maj 2005 - 10:51 #33
Fjern pingerne rundt om alle tal-felter og lad os så se om det ikke hjælper på Access' samarbejdsvilje.
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 10:55 #34
ok
men hvad gør jeg ved www.xcc.dk/test2.JPG og den rs.open sætning den ikke godtager
Avatar billede nielle Nybegynder
26. maj 2005 - 10:57 #35
Det der er jo den gamle fejl - den forsvinder sikkert når du fjerner de pinger.
Avatar billede nielle Nybegynder
26. maj 2005 - 10:59 #36
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
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 11:06 #37
I er da for seje ;D nu virker det .. svar please
Avatar billede nielle Nybegynder
26. maj 2005 - 11:06 #38
Cool :^)
Avatar billede hiks Nybegynder
26. maj 2005 - 11:07 #39
godt så... :o)

/hiks
Avatar billede xcc.dk Nybegynder
26. maj 2005 - 11:27 #40
Tusind tak for jeres kanone indsæts !!! tro mig den har virkeligt iriteret mig den update sætning ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester