Avatar billede Slettet bruger
12. oktober 2000 - 12:59 Der er 29 kommentarer og
1 løsning

Slette records

Okay, jeg er måske lidt en nar.

Men jeg giver op nu. Jeg giver fortabt.

Hvordan sletter man den pokkers record.

Jeg har NotatID som er en autonummerering. Hvis jeg nu vil slette nummer 4...

Jeg tror jeg bliver rippet for point inden jeg er færdig med mit projekt :-)
Avatar billede powell Nybegynder
12. oktober 2000 - 13:08 #1
Hvad med delete.recordset ?
Avatar billede Slettet bruger
12. oktober 2000 - 13:11 #2
Jeg har bikset denne kode sammen, men det springer i luften.

Private Sub Command3_Click()
Dim DB As Database
Dim RS As Recordset
Set DB = OpenDatabase(\"C:\\Ting og Sager\\Teknologi projekt\\notat.mdb\")
Set RS = DB.OpenRecordset(\"Notat\")
SQLstring = \"SELECT Notat.NotatID From Notat WHERE (Notat.NotatID = \'\" & List3.Text & \"\')\"
Set RS = DB.OpenRecordset(SQLstring)

RS.Delete

End Sub
Avatar billede powell Nybegynder
12. oktober 2000 - 13:14 #3
Se her mens jeg lige tager en kikker på din kode:
http://www.eksperten.dk/spm/25560
Avatar billede Slettet bruger
12. oktober 2000 - 13:16 #4
Okay jeg kom ti at \"Set RS\" 2 gange, men det var ikke det.

Det springer stadig i luften.

Kigger lige på linket.
Avatar billede moses Praktikant
12. oktober 2000 - 13:17 #5
Du skal ikke have sætningen:

Set RS = DB.OpenRecordset(\"Notat\")


Avatar billede Slettet bruger
12. oktober 2000 - 13:20 #6
Data type mismatch in criteria expression.

Siger den.

Har fjernet den sætning du sagde.
Avatar billede powell Nybegynder
12. oktober 2000 - 13:21 #7
Hvad skriver den når den eksploderer?
Avatar billede powell Nybegynder
12. oktober 2000 - 13:22 #8
ud over <<BANG>>
Avatar billede powell Nybegynder
12. oktober 2000 - 13:23 #9
Jeg tror at den går i stå ved din SQLstring...
Avatar billede Slettet bruger
12. oktober 2000 - 13:26 #10
Ja, den breaker ved Set RS.

Fatter det ikke.

Men OK. Jeg fatter ikke så meget om databaser alligevel.
Avatar billede powell Nybegynder
12. oktober 2000 - 13:31 #11
Jeg tror nok jeg ville gøre det sådan her:

Set RS = DB.OpenRecordset(\"Notat\", dbOpenTable)
Avatar billede Slettet bruger
12. oktober 2000 - 13:33 #12
Nu springer den ikke i luften, men den sletter heller ikke nogen records.
Avatar billede Slettet bruger
12. oktober 2000 - 13:40 #13
Okay, nu sletter den den første record i min database. Ikke den som jeg beder den om.
Avatar billede powell Nybegynder
12. oktober 2000 - 13:43 #14
Det er fordi din SQLstring ikke referer til en database. Se hvor den havner, ved at sætte msgbox ind som giver dig de data der står i det felt du ønsker at slette. (Blot et tipz!)

Noget andet, drop da den SQLstring og gør sådan her:

rs.movefirst

\'Læg denne rutine i en sub
Do Until RS.EOF
  If RS!NotatID = List3.text then exit sub
Loop
\' her til

rs.delete


Avatar billede Slettet bruger
12. oktober 2000 - 13:49 #15
En sub?
Avatar billede powell Nybegynder
12. oktober 2000 - 13:57 #16
sub = subrutine

Sådan her:

rs.movefirst

Find_onsket_record \'subrutine

rs.delete

Private Sub Find_onsket_record ()

Do Until RS.EOF
  If RS!NotatID = List3.text then exit sub
Loop

End Sub

Avatar billede powell Nybegynder
12. oktober 2000 - 13:57 #17
Hold da op hvor bliver du klog idag!
Avatar billede powell Nybegynder
12. oktober 2000 - 13:59 #18
Rutinen vil foresten hvis den ikke finder noget i Listboxen at sammenligne med i tabellen, så vil den havne på sidste record, og ønskes denne ikke slettet skal du lige tilføje i suben foreks. msgbox (\"Ingen poster fundet der matchede, din lede bruger ko, så derfor sletter jeg den sidste!\")
Avatar billede Slettet bruger
12. oktober 2000 - 14:06 #19
Es springst im lufts noch ein mal.

Object invalid or no longer set.

Koden:

Private Sub Command3_Click()
Dim DB As Database
Dim RS As Recordset
Set DB = OpenDatabase(\"C:\\Ting og Sager\\Teknologi projekt\\notat.mdb\")
Set RS = DB.OpenRecordset(\"Notat\", dbOpenTable)


RS.MoveFirst

Find_onsket_record \'subrutine

RS.Delete

End Sub

Private Sub Find_onsket_record()

Do Until RS.EOF
  If RS!NotatID = List3.Text Then Exit Sub
Loop

End Sub
Avatar billede powell Nybegynder
12. oktober 2000 - 14:10 #20
Hvor langt kommer den i rutinen, hvis du ikke kan se det så set msgbox\'e ind med små oplysninger så ved du hvorlangt den kommer i rutinen...
Avatar billede Slettet bruger
12. oktober 2000 - 14:19 #21
Den breaker ved Do Until RS.EOF

Jeg tror det er fordi den der RS kun virker inde i Command3 subben.
Avatar billede powell Nybegynder
12. oktober 2000 - 14:33 #22
Det har du da naturligvis ret i, drop sub\'en og set foreksempel en løkke ind i stedet.

f.eks.
Do until rs!notat = text3.text
  rs.movenext
loop

eller
Do while i = 0
  if rs!notat = text3.text then i = 1
  if rs.eof then
    msgbox\"Ingen record fundet\"
    i = 2
  end if
  if i = 0 then rs.movenext
end if

if i = 1 then rs.delete
Avatar billede powell Nybegynder
12. oktober 2000 - 14:33 #23
husk at dimensionere i.

Dim i as byte
i = 0
Avatar billede powell Nybegynder
12. oktober 2000 - 14:34 #24
Hov der mangler et loop oppe i min rutine...
Avatar billede Slettet bruger
12. oktober 2000 - 14:40 #25
Ja, det fandt jeg lige ud af.

Og VB crashede også.

Jeg tror den havnede i en uendelig løkke.

Gudskelov jeg havde gemt.
Avatar billede Slettet bruger
12. oktober 2000 - 14:43 #26
Wohoo!

Jeg er naren til at kode.

Naren, naren, naren.

Jeg bliver blomsterbinder i stedet.

Men nu virker det.

Her har du lige en slat point for al dit besvær :)
Avatar billede Slettet bruger
12. oktober 2000 - 14:47 #27
Her er koden der virker. Jeg skulle lige rette notat til notatid et par steder. Det var det hele.

Private Sub Command3_Click()
Dim DB As Database
Dim RS As Recordset
Set DB = OpenDatabase(\"C:\\Ting og Sager\\Teknologi projekt\\notat.mdb\")
Set RS = DB.OpenRecordset(\"Notat\")


Do While i = 0
  If RS!notatid = List3.Text Then i = 1
  If RS.EOF Then
    MsgBox \"Ingen record fundet\"
    i = 2
  End If
  If i = 0 Then RS.MoveNext
Loop

If i = 1 Then RS.Delete

End Sub
Avatar billede powell Nybegynder
12. oktober 2000 - 14:50 #28
Her har du hele rutinen:

Private Sub Command3_Click()

\'dimensionering af databasen
Dim DB As Database
Dim RS As Recordset

\'dimensionering af løkke
Dim i as integer
i = 0

\'Åbne databasen
Set DB = OpenDatabase(\"C:\\Ting og Sager\\Teknologi projekt\\notat.mdb\")
Set RS = DB.OpenRecordset(\"Notat\", dbOpenTable)

\'Find den record der skal slettes, dette bliver tastet ind i et textfelt.

rs.movefirst \'hopper til den første record

do until rs.eof
  if rs!notat = text1.text then \'Her skal der stå en gyldig parameter
        msgbox (\"Recorden er fundet\")
        rs.delete
        i = 1
  end if
  if i = 0 then rs.movenext
loop

End Sub

Denne rutine virker, gør den ikke det, så har du en stavefejl et eller andet sted.
Avatar billede powell Nybegynder
12. oktober 2000 - 14:51 #29
OK, så var jeg blot for langsom, hehe (Tak for de ekstra point)
Avatar billede powell Nybegynder
12. oktober 2000 - 14:53 #30
Hov min sidste rutine indeholder også en fejl, hvis den finder recorden vil den køre ud i en uendelig løkke....
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel