vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
ADO Recordset delete-Funktion 
Autor: SpaXX2
Datum: 08.06.05 21:24

Hallo,

Ich benutze ein ADO.Recordset um eingescannte Artikeldaten zwischenzuspeichern. Der benutzer kann alle Daten zusammentragen, löschen, neu scannen und die Daten, wenn der Kunde zufrieden ist, endgültig in die Datenbank (Access2000) übertragen.

Folgendes geschieht dabei. Für den seltenen Fall, dass aus dem Recordset zum zwischenspeichern (rsData) alle Daten gelöscht werden und anschließend neue Daten eingelesen werden, zeigt die Software dieses zwar noch an, doch beim Übertragen in die datenbank werden keine Daten übertragen.

Hier die aus meiner Sicht entscheidende Codestelle:
If rsData.EOF = True And rsData.BOF = True Then
    MsgBox "Kein Eintrag vorhanden"
    Exit Sub
Else
    If MsgBox("Wollen Sie den Artikel wirklich stornieren?", vbYesNo) = vbYes _
      Then      'Sicherheitsabfrage, ob Artikel wirklich storniert werden soll
        rsStornoSum = rsData.Fields("Preis").Value                              _
                'Auslesen des aktuellen Wertes und Zuweisen an Variable
       ...        
rsData.Delete                                                                   _
  'Aktuellen Datensatz löschen
        rsData.MoveFirst
        rsData.UpdateBatch adAffectCurrent
    End If
Die Datenübertragung sieht so aus:
Do While Not rsData.EOF                                 'Schleife zum Einfügen 
' aller Datensätze bis erreichen EOF
        rsUmsätze.AddNew                                    'Datensatz in 
        ' Datenbank einfügen
            rsUmsätze!Verk_ID = lbl_VerkID.Caption
            rsUmsätze!Artikel_ID = rsData.Fields("ArtikelNr").Value
            rsUmsätze!SubArtikel_ID = rsData.Fields("LieferNr").Value
            rsUmsätze!SubVerk_Preis = rsData.Fields("Preis").Value
            rsUmsätze!BuchungArt = rsData.Fields("BuchArt").Value
        rsUmsätze.Update
        rsData.MoveNext
    Loop
Weiss jemand Rat?

Vielen Dank im Voraus
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ADO Recordset delete-Funktion 
Autor: Prian0815
Datum: 09.06.05 09:02


Probier mal das hier aus, weiß nicht obs die Umstellung von Move First und Update ist, könnte aber durchaus möglich sein.If rsData.EOF = True And rsData.BOF = True Then
MsgBox "Kein Eintrag vorhanden"
Exit Sub
Else
If MsgBox("Wollen Sie den Artikel wirklich stornieren?", vbYesNo) = vbYes
Then 'Sicherheitsabfrage, ob Artikel wirklich storniert werden soll
rsStornoSum = rsData!Preis 'Auslesen des aktuellen
' Wertes
rsData.Delete 'Aktuellen Datensatz löschen
rsData.UpdateBatch adAffectCurrent
rsData.MoveFirst
End If
Die Datenübertragung sieht so aus:

Do While Not rsData.EOF 'Schleife zum Einfügen aller Datensätze bis erreichen EOF
rsUmsätze.AddNew 'Datensatz in Datenbank einfügen
rsUmsätze!Verk_ID = lbl_VerkID.Caption
rsUmsätze!Artikel_ID = rsData!ArtikelNr
rsUmsätze!SubArtikel_ID = rsData!LieferNr
rsUmsätze!SubVerk_Preis = rsData!Preis
rsUmsätze!BuchungArt = rsData!BuchArt
rsUmsätze.Update
rsData.MoveNext
Loop

Gruß Armin

P.S.: always look on the bright side of Life!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ADO Recordset delete-Funktion 
Autor: SpaXX2
Datum: 14.06.05 00:17

Das war es. Vielen Dank für den Tipp. Allerdings bin ich etwas überrascht, denn den Tipp mit der Bewegung des Datensatzzeigers habe ich aus einer Dokumentation. Angeblich wird rs.delete erst ausgeführt, wenn der Datensatzzeiger sich vom gelöschten Eintrag entfernt hat. Dehalb erst rs.move und dann rs.update. Aber offensichtlich habe ich da etwas nicht ganz verstanden.

Vielen Dank

spaxx
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel