Avatar billede amcon Nybegynder
11. marts 2011 - 17:09 Der er 12 kommentarer og
1 løsning

Fejl ved SQL UPDATE

Opgaven er at kunne opdatere felter i en tabel udfra et filter i en formular.

En tabel: MinTabel
Med felter: Felt1, Felt2, Felt3

Jeg opretter en formular baseret på tabellen
Ved at filtrere, f.eks på Felt1, finder jeg der datasæt hvori jeg vil opdatere Felt2.

Den tekst der skal opdateres i Felt2 med findes i et ubundet felt i formularen, FeltUpd.
I første omgnag er det almindelig tekst, men tal og dato kan komme på tale.

kode:

Private Sub Kommandoknap79_Click()
Dim strSQL, As String

strSQL = "UPDATE MinTabel SET MinTabel.Felt2 = ""&[Form]![FeltUpd]&"" WHERE " & Me.Filter & ";"

DBEngine(0)(0).Execute strSQL, dbFailOnError

Alternativt kunne man bruge:

CurrentDb.Execute "UPDATE MinTabel SET MinTabel.Felt2 = ""&[Form]![FeltUpd]&"" WHERE " & Me.Filter & ";"

FEJL: Der er får få parametre. Der var ventet 1

Jeg bruger Access 2003.

Det er muligt at fejlen ligger lige for mine fødder, men jeg har set mig blind.

Er der nogen der kan hjælpe.

Hilsen

AMCOM
Avatar billede neoman Novice
11. marts 2011 - 17:19 #1
""&[Form]![FeltUpd]&"" WHERE " & Me.Filter & ";"
->
" & Chr(34) & [Form]![FeltUpd]& Chr(34) & " WHERE " & Me.Filter & ";"
Avatar billede neoman Novice
11. marts 2011 - 17:21 #2
og for at få det helt rigtigt:

" & Chr(34) & [Form]![FeltUpd] & Chr(34) & " WHERE " & Me.Filter & ";"
Avatar billede amcon Nybegynder
11. marts 2011 - 18:11 #3
Hej neoman

Det giver samme fejl:
Runtime error '3061'

Der er får få parametre. Der var ventet 1
Avatar billede amcon Nybegynder
11. marts 2011 - 18:16 #4
Jeg tror at fejlen stammer fra sektionen Me.Filter
Avatar billede neoman Novice
11. marts 2011 - 18:21 #5
prøv at Debug.Print din strSQL til Immediate-vinduet
Avatar billede amcon Nybegynder
11. marts 2011 - 19:43 #6
Sådan bliver man klogere. Jeg havde da lagt en forespørgsel bag testformularen - :-(( pokker og SORRY.
Men det virker ved at basere formularen direkte på tabellen, både som oprindelig men også med din kode.

Så langt så godt.
Hvordan vil det se ud hvis man baserer formularen på en forespørgsel?

Når formularen er baseret på forespørgslen ignorerer koden filteret.

Ka' du også knække den?
Avatar billede neoman Novice
11. marts 2011 - 19:58 #7
Jeg forstår ikke helt hvad du ønsker.

Eftersom din formular er baseret på den samme tabel som du ønsker at opdatere, og efter filtrering har du fat i den eller de rækker som skal opdateres, fx why not bare gøre det direkte på formularen? Altså løbe gennem de rækker der nu er udvalgt og sætte værdien til det den skal være? Eler har jeg ikke  opfattet det rigtigt?



"Når formularen er baseret på forespørgslen ignorerer koden filteret." ? Er ikke helt med på hvad "ignorerer" betyder - husk du skriver sammen med en som aldrig har set din db før :)
Avatar billede amcon Nybegynder
11. marts 2011 - 21:35 #8
Jeg er lidt ude på tynd is her. Jeg vil gerne basere formularen på en forespørgsel istedet for en tabel. Koden virker kun når jeg bruger tabel og ikke når jeg bruger forespørgsel.

Men fornemmer jeg at du har en anden ide til at opdatere felter i formularen?
Avatar billede amcon Nybegynder
13. marts 2011 - 11:21 #9
Hej neoman

Tak for hjælpen. Jeg prøver at komme videre.

Du får point.
Avatar billede amcon Nybegynder
13. marts 2011 - 11:24 #10
opret er svar så du kan få point.
Avatar billede neoman Novice
14. marts 2011 - 08:54 #11
Jeg kan ikke se hvordan jeg bidrog til løsningen, så hvis den er fundet bare tag dine points selv.
Avatar billede amcon Nybegynder
14. marts 2011 - 10:03 #12
Uanset hvad fik du mig tilbage på sporet igen og det virker som det skal nu. Så du har fortjent point som tak for hjælpen.
Avatar billede neoman Novice
14. marts 2011 - 10:20 #13
Jeg gi'r mig ;-)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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