Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

VB6 & ADO : Mega Probleme -----> VB stürzt beim Updaten ab

report99 (Anonym) / 0 Antworten / Flachansicht Nickles

Habe riesige Probleme mit meinem Quellcode !!!

Die Lage :

Zugriff auf Access97-DB über ADO-Control.

Will die Datenbank updaten und es stürzt komplett VB ab!!!

Habe unter MSDN geschaut & bin kein deut schlauer geworden dabei!!!

Hier mein Quellcode :


Private Sub Command1_Click(Index As Integer)
Dim i As Integer
Dim Abfrage As String, Abfrage2 As String
Dim x0, x1, x2, x3, x4, x5, x6, x7, x8
Dim adoRst2 As ADODB.Recordset
Set adoCon = New ADODB.Connection
Set adoRst2 = New ADODB.Recordset
Set adoRst = New ADODB.Recordset
Abfrage = "SELECT * FROM Wochenberichtserfassung"
Abfrage2 = "SELECT * FROM Auftragsnummernverzeichnis"

Select Case Index
Case 0 '--- Neuer Eintrag
Call TextfelderHervorheben
For i = 0 To 6
Option1(i).Enabled = True
Next
Text1(0).SetFocus
Command1(0).Enabled = False
For i = 3 To 7
Command1(i).Enabled = False
Next
Exit Sub
Case 1 '--- Eingabe löschen
Call TextfelderLöschen
For i = 0 To 7
Command1(i).Enabled = True
Next
For i = 0 To 6
Text1(i).BackColor = vbWhite
Option1(i).Enabled = False
Text1(i).Locked = True
Next
Exit Sub
Case 2 '--- Eintrag speichern
x0 = Trim(Text1(0).Text)
x1 = Trim(Text1(1).Text)
x2 = Trim(Text1(2).Text)
x3 = Trim(Text1(3).Text)
x4 = Trim(Text1(4).Text)
x5 = Trim(Text1(5).Text)
x6 = Trim(Text1(6).Text)
x8 = Trim(Text1(7).Text)
With adoCon
.ConnectionString = "Provider =
Microsoft.Jet.OLEDB.3.51;Data Source=" & pfad & datei & ";" '---
Variable pfad und datei sind als Konstante deklariert
.CursorLocation = adUseClient
.Open
End With
'--- Ermitteln der AuftragsnummerID
With adoRst2
.Open Abfrage2, adoCon, adOpenKeyset, adLockReadOnly
.MoveFirst
.Find "Produktunterteilung='" & x0 & "'", , adSearchForward
If .EOF Then
MsgBox "Die Eingabe an der Produktunterteilung ist
falsch!!"
Text1(0).SetFocus
.Close
Exit Sub
Else
If adoRst2!Auftragskernnummer x1 Then
.Find "Auftragskernnummer='" & x1 & "'", ,
adSearchForward
If .EOF Then
MsgBox "Die Eingabe Auftragskernnummer ist
falsch!!"
Text1(1).SetFocus
.Close
Exit Sub
Else
If adoRst2!Aufwandsart x2 Then
.Find "Aufwandsart='" & x2 & "'", ,
adSearchForward
If .EOF Then
MsgBox "Die Eingabe Aufwandsart ist
falsch!!"
Text1(2).SetFocus
.Close
Exit Sub
Else
If adoRst2!Auftragspositionsnummer x3
Then
.Find "Auftragspositionsnummer='" &
x3 & "'", , adSearchForward
If .EOF Then
MsgBox "Die Eingabe
Auftragsposition ist falsch!!"
Text1(3).SetFocus
.Close
Exit Sub
Else
If (adoRst2!Arbeitscode x4)
Then
.Find "Arbeitscode='" & x4 &
"'", , adSearchForward
If .EOF Then
MsgBox "Die Eingabe
Arbeitscode ist falsch!!"
Text1(4).SetFocus
.Close
Exit Sub
End If

x7 =
.Fields("AuftragsnummernID").Value
Else


x7 =
.Fields("AuftragsnummernID").Value
End If
End If
End If
End If
End If
End If
End If
End If
.Close
End With
'--- Datensatz in Datenbank
With adoRst
.Open Abfrage, adoCon, adOpenDynamic, adLockOptimistic
.MoveLast
.AddNew
.Fields("AuftragsnummernID").Value = x7
.Fields("MitarbeiterID").Value = MitarbeiterID
.Fields("FirmenID").Value = FirmenID
.Fields("WochenberichtsID").Value = x8
.Fields("Jahr").Value = "2000"
If Option1(0) Then
.Fields("Arbeitsstunden_Mo").Value = x5
.Fields("Arbeitsstunden_Di").Value = "0"
.Fields("Arbeitsstunden_Mi").Value = "0"
.Fields("Arbeitsstunden_Do").Value = "0"
.Fields("Arbeitsstunden_Fr").Value = "0"
.Fields("Arbeitsstunden_Sa").Value = "0"
.Fields("Arbeitsstunden_So").Value = "0"
ElseIf Option1(1) Then
.Fields("Arbeitsstunden_Mo").Value = "0"
.Fields("Arbeitsstunden_Di").Value = x5
.Fields("Arbeitsstunden_Mi").Value = "0"
.Fields("Arbeitsstunden_Do").Value = "0"
.Fields("Arbeitsstunden_Fr").Value = "0"
.Fields("Arbeitsstunden_Sa").Value = "0"
.Fields("Arbeitsstunden_So").Value = "0"
ElseIf Option1(2) Then
.Fields("Arbeitsstunden_Mo").Value = "0"
.Fields("Arbeitsstunden_Di").Value = "0"
.Fields("Arbeitsstunden_Mi").Value = x5
.Fields("Arbeitsstunden_Do").Value = "0"
.Fields("Arbeitsstunden_Fr").Value = "0"
.Fields("Arbeitsstunden_Sa").Value = "0"
.Fields("Arbeitsstunden_So").Value = "0"
ElseIf Option1(3) Then
.Fields("Arbeitsstunden_Mo").Value = "0"
.Fields("Arbeitsstunden_Di").Value = "0"
.Fields("Arbeitsstunden_Mi").Value = "0"
.Fields("Arbeitsstunden_Do").Value = x5
.Fields("Arbeitsstunden_Fr").Value = "0"
.Fields("Arbeitsstunden_Sa").Value = "0"
.Fields("Arbeitsstunden_So").Value = "0"
ElseIf Option1(4) Then
.Fields("Arbeitsstunden_Mo").Value = "0"
.Fields("Arbeitsstunden_Di").Value = "0"
.Fields("Arbeitsstunden_Mi").Value = "0"
.Fields("Arbeitsstunden_Do").Value = "0"
.Fields("Arbeitsstunden_Fr").Value = x5
.Fields("Arbeitsstunden_Sa").Value = "0"
.Fields("Arbeitsstunden_So").Value = "0"
ElseIf Option1(5) Then
.Fields("Arbeitsstunden_Mo").Value = "0"
.Fields("Arbeitsstunden_Di").Value = "0"
.Fields("Arbeitsstunden_Mi").Value = "0"
.Fields("Arbeitsstunden_Do").Value = "0"
.Fields("Arbeitsstunden_Fr").Value = "0"
.Fields("Arbeitsstunden_Sa").Value = x5
.Fields("Arbeitsstunden_So").Value = "0"
ElseIf Option1(6) Then
.Fields("Arbeitsstunden_Mo").Value = "0"
.Fields("Arbeitsstunden_Di").Value = "0"
.Fields("Arbeitsstunden_Mi").Value = "0"
.Fields("Arbeitsstunden_Do").Value = "0"
.Fields("Arbeitsstunden_Fr").Value = "0"
.Fields("Arbeitsstunden_Sa").Value = "0"
.Fields("Arbeitsstunden_So").Value = x5
End If
.Update
.Close
End With
For i = 0 To 7
Command1(i).Enabled = True
Next
adoCon.Close
Set adoRst2 = Nothing
Set adoRst = Nothing
Set adoCon = Nothing
Exit Sub
Case 3 '--- bisherige Einträge
Me.Hide
Form1_WochenberichtListe.Show
'Form1_WochenberichtListe.Label1.Caption = "MitarbeiterID"
Exit Sub
Case 4 '--- Optionenmenü
i = MsgBox("Wollen Sie die Anwendung abbrechen?", vbYesNo,
"Bitte bestätigen!")
If (i = 6) Then
Unload Me
Form1_Optionenmenü.Show
Set Form1_WochenberichtErfassung = Nothing
Exit Sub
Else
Me.Refresh
End If
Case 5 '--- Suchen
Me.Hide
Form1_Suche.Show
Form1_Suche.Label2.Caption = "Wochenberichtsverzeichnis"
Form1_Suche.Label3.Caption = "MitarbeiterID"
Exit Sub
Case 6 '--- Freigabe

Case 7 '--- Korrektur

End Select

End Sub

Zusätzlich ist mir beim Einzelschritt - Vorgehen [F8] folgendes aufgefallen
:

x7 wird kein Wert zugewiesen, obwohl auf der rechten Seite des
Gleichheitszeichens das richtige Recordset.Value steht!!!

Gruss und Dank im voraus!!!

Dimi

bei Antwort benachrichtigen