Avatar billede rookie44 Juniormester
25. december 2011 - 15:11 Der er 11 kommentarer og
1 løsning

Delete records fra tabeller

1)Set rstPOMatr = mydb.OpenRecordset("SELECT * FROM [T_POMatrlin] Where [Pordrenr] = " & rstPOLuk!Prodordre & ";")
                               
2)Set rstPOMatr = mydb.OpenRecordset("DELETE * FROM [T_POMatrlin] Where ("SELECT * FROM [T_POMatrlin] Where [Pordrenr] = " & rstPOLuk!Prodordre & ";")";")

Nr.1 virker fint når jeg skal læse hvor mange records der er.
Nr.2 giver fejlen expected list or operator.
Det er sikkert noget med " jeg ikek får anbragt rigtigt. Jeg vil helst lære den rigtige SQL sætning fremfor at lave en sletteforespærgsel.
Avatar billede terry Ekspert
25. december 2011 - 16:25 #1
DELETE * FROM [T_POMatrlin] Where

that parts correct but the where part is wrong

The WHERE clause specifies which record or records that should be deleted

EG:
WHERE SomeField = Something

so ("SELECT * FROM [T_POMatrlin] Where [Pordrenr] = " & rstPOLuk!Prodordre & ";")";")

shoudl return a value which is = Something
Avatar billede rookie44 Juniormester
25. december 2011 - 18:07 #2
terry

Er det ikke også det jeg har skrevet?
Det hele kunne ikke være på 1 linie i eksperten, men det er det i programmet.
Avatar billede terry Ekspert
25. december 2011 - 19:38 #3
what does the follwoing return if you mnake a query from it?


("SELECT * FROM [T_POMatrlin] Where [Pordrenr] = " & rstPOLuk!Prodordre & ";")";")



First thing I notice is SELECT * which mean ALL fields, so

... WHERE SomeField = AllFields isnt gointo work


But if you mean something like


DELETE * FROM [T_POMatrlin] Where [Pordrenr] = " & rstPOLuk!Prodordre

thebn maybe that is what your after
Avatar billede rookie44 Juniormester
25. december 2011 - 19:51 #4
terry

1. Den fortæller mig antal records der skal slettes.

2. jeg har prøvet med
DELETE*FROM[T_POMatrlin]WHERE[Pordrenr] = "&rstPOLuk!Prodordre & ";"

Når jeg stepper igennem programmet kommer jeg til linien, der meldes ingen fejl men records slettes ikke. Der er 4 records i tabellen
Avatar billede terry Ekspert
26. december 2011 - 10:52 #5
1. Den fortæller mig antal records der skal slettes.

The WHERE clause specifies which record or records that should be deleted NOT the number
Avatar billede terry Ekspert
26. december 2011 - 10:53 #6
if you want to delete them all then

DELETE * FROM [T_POMatrlin]

is enough
Avatar billede rookie44 Juniormester
26. december 2011 - 21:03 #7
Jeg vil kun under udviklingen se om den har fat i de rigtiger antal records. Linien slettes senere når alt fungerer.

Jeg vil ikke slette alt, kun de specificerede records.
Avatar billede rookie44 Juniormester
27. december 2011 - 11:13 #8
terry
kan problemet være at jeg først SELECTer, og dermed har fat i de records, der skal slettes, for dernæst at DELETE dem uden at have lukket SELECT recordsene først.
Er du med på hvad jeg mener, eller skal jeg prøve at skrive det på engelsk?


Set rstPOMatr = mydb.OpenRecordset("SELECT * FROM [T_POMatrlin] Where [Pordrenr] = " & rstPOLuk!Prodordre & ";")
rstPOMatr.MoveLast
If rstPOMatr.RecordCount > 0 Then
       
Set rstPOMatr=mydb.OpenRecordset("DELETE * FROM [T_POMatrlin] Where [Pordrenr] = " & rstPOLuk!Prodordre & ";")
Avatar billede terry Ekspert
27. december 2011 - 19:45 #9
Jeg er 100% med :o)

It may be a problem and quite easy to check by closing it before the delete, but then I dont see why you need to check if there are any records first, I would just delete and save time.
Avatar billede terry Ekspert
27. december 2011 - 20:47 #10
you can also use

Docmd.Runsql "DELETE * FROM [T_POMatrlin] Where [Pordrenr] = " & rstPOLuk!Prodordre

so no need to re-use the recordset
Avatar billede rookie44 Juniormester
28. december 2011 - 13:04 #11
DoCmd var lige det jeg skulle bruge. Den havde jeg slet ikek tænkt på. Jeg troede egentlig at den virkede på samme måde, som når jeg skrev den anden kodde.



Lægger du et svar.
Avatar billede terry Ekspert
28. december 2011 - 18:26 #12
:o)
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