Toon posts:

[vb] meerdere rows deleten met DOA

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik ben dus nu een paar dagen bezig met een soort van leraarsysteem, die klassen en leerlingen mag aanmaken wijzigen en deleten.
Nu heb ik een tabel waar ik klassen in opsla, enkel en alleen klassen. Nu vul ik mijn combo's met die klassen zodat een leraar alleen uit die klassen kan kiezen. Ik link de leerlingtabel en klastabel onderling niet.

Nu heb ik dus een button, waarmee ik alle leerlingen in 1x uit de klas wil laten verwijderen. Daarna volgt de optie om de klas zelf ook weg te gooien of te behouden.

Het probleem is echter dat hij alleen de eerste naam verwijderd, die in die klas zit. Om het te verduidelijken hier het stukje script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Function DeleteKlas(frm As Form, cmbInh As String)
    'On Error GoTo fout
    Dim i As Integer
    If MsgBox("U staat op het punt om alle leerlingen uit de klas " & cmbInh & " te verwijderen.\n Wilt u doorgaan?", vbOKCancel, "Waarschuwing") = vbOK Then
        Set RS = db.OpenRecordset("SELECT * FROM leerlingen where klas = '" & cmbInh & "'", dbOpenDynaset)
        With RS
           .Delete
           
           .Close
        End With
    Else
        GoTo Eind:
    End If
    If MsgBox("De klas " & cmbInh & " is leeg. Wilt u deze verwijderen?", vbOKCancel, "Klas verwijderen") = vbOK Then
        Set RS = db.OpenRecordset("SELECT * FROM klas where klas = '" & cmbInh & "'", dbOpenDynaset)
        With RS
            .Delete
            .Close
        End With
    End If
    GoTo Eind
fout:
    fbschap = MsgBox("Er heeft een fout plaats gevonden", vbOKOnly, "Fout")
Eind:
End Function


Iemand een id? Ik heb in de msdn van microsoft wel iets gevonden van .deleterows maar die herkend hij echter niet.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:14

gorgi_19

Kruimeltjes zijn weer op :9

Waarom maak je je query niet
SQL:
1
Delete FROM klas where klas = '" & cmbInh & "'"

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Mja, dat heb ik wel geprobeerd, maar het werkte niet... misschien dat ik de regel verkeerd had maar ik had dus:

code:
1
Set RS = db.OpenRecordset("DELETE FROM leerlingen where klas = '" & cmbInh & "'", dbOpenDynaset)


maar goed, dit werkte niet, en SET RS weglaten mag weer niet...
Of heb ik het gewoon helemaal fout?

[ Voor 18% gewijzigd door Verwijderd op 14-12-2002 15:18 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:14

gorgi_19

Kruimeltjes zijn weer op :9

Zo goed ken ik VB niet.. Heb je niet iets van een execute-property?
In principe wil je namelijk geen recordset terughebben...

En wat werkte niet aan deze statement?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 14 December 2002 @ 15:20:
Zo goed ken ik VB niet.. Heb je niet iets van een execute-property?
In principe wil je namelijk geen recordset terughebben...

En wat werkte niet aan deze statement?
Ongeldige bewerking zegt hij.

Maar met die execute zou het moeten werken.. ben aan het zoeken,
maar het wil nog niet zo vlotten helaas

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Probeer dit eens:

code:
1
db.Execute("Delete FROM klas where klas = '" & cmbInh & "'")

Verwijderd

Topicstarter
robjanssen schreef op 14 december 2002 @ 16:28:
Probeer dit eens:

code:
1
db.Execute("Delete FROM klas where klas = '" & cmbInh & "'")
mja , geprobeerd, werkte niet bij mij, kep het wel anders ogelost:

code:
1
2
3
4
If MsgBox("U staat op het punt om alle leerlingen uit de klas " & cmbInh & " te verwijderen.\n Wilt u doorgaan?", vbOKCancel, "Waarschuwing") = vbOK Then
        strSQL = "DELETE FROM leerlingen WHERE klas = '" & cmbInh & "'"
        db.Execute (strSQL)
Else


Is in principe hetzelfde... kweet niet waarom dat andere niet werkte eigenlijk

  • Squall-sX
  • Registratie: April 2002
  • Laatst online: 19-08 11:11
Dat heeft iets met het sluiten en openen van die strings te maken denk ik. Misschien dat hij een "," verwacht, of wat je juist wilt hebben (dynaset, table, ...). In alle voorbeelden in de boeken zie je trouwens ook dat ze een string gebruiken voor het sql-commando.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 00:27

mulder

ik spuug op het trottoir

Kleine advies: cmbInh.Text is wat netter. Wat je nu doet is het object aan de string toe voegen, en toevallig heeft dit object Text als default property, dus werkt het. Het is duidelijker en wat minder error gevoelig als je de property aanspreekt.

oogjes open, snaveltjes dicht


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Ik zie eigenlijk wel meer dingen die niet kloppen in je code.
Je doorloopt je recordset niet. Je moet iets als volgt hebben.
Visual Basic:
1
2
3
4
Do while not Rs.Eof
  Rs.delete
  Rs.movenext
Loop


Nu doorloop je je recordset wel en wordt alles gewijzigd. Tevens kijk je of er wel klassen zijn die verwijderd moeten worden.

En ik zou bij je foutmelding ook de err.number en err.description tonen, die is makkelijk voor als er fouten optreden.

Maar ja beetje te laat aangezien je het al aan het draaien hebt.
Pagina: 1