-
VBA Datensatz
Hi Leute,
ich habe nen kleinen bis mittelschweres Problem!
Dazu muß ich sagen, ich bin kein Programmierer oder so, ich habe auch noch nicht sehr viel programmiert!!
So nun zu meinem problem! Ich habe mit Access und VBA mir eine kleine Datenbank erstellen wollen. Habe dazu ein Formular erstellt, wo mann die Daten eingeben kann! Zu erst habe ich ein Label gemacht, wo man sie die Nummer(Primärschlussel) raussuchen kann. Danach kann man Name Straße usw eingeben! Wenn ich dann aber auf speichern klicke, schreibt er das immer in die oberste Zeile in meiner Tabelle, und nicht in die Zeile in welcher ich die Nummer gesucht habe! Es muß da noch irgendein Befehl oder so was geben?
Ich habe es vielleicht etwas zu komplieziert geschrieben, aber vielleicht könnt ihr mir ja trotzdem helfen! Ich schreib meinen Quelltext von VBA einfach mal mit hier rein.
Option Compare Database
Option Explicit
Private Sub cmdschl_Click()
DoCmd.Close
End Sub
Ab hier soll er die Labels in den Datensatz speichern
Private Sub cmdspeichern_Click()
Dim rst As ADODB.Recordset
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
Set rst = New ADODB.Recordset
Dim db As Database
Dim rs As Recordset
Dim Krit As String
If IsNull(lblnummer1) Then
MsgBox "Bitte Such-ID eingeben.", 64
lblartikel1.SetFocus
Else
Set db = CurrentDb()
Set rs = db.OpenRecordset("Datensatz", dbOpenSnapshot)
Krit = "Auktionsnummer='" & lblnummer1 & "'"
rs.FindFirst Krit
With rst
.Open "Datensatz", conn, adOpenKeyset, adLockOptimistic
.Fields("eBayName") = lblename
.Fields("Name") = lblName
.Fields("Straße") = lblstrasse
.Fields("PLZ") = lblplz
.Fields("Ort") = lblort
.Fields("Gebot") = lblgebot
.Fields("Porto") = lblporto
.Fields("Gesamtpreis") = lblgesamt
.Update
.Close
End With
End If
Set rst = Nothing
Set conn = Nothing
End Sub
Ab hier sucht den Primärschlüssel und gibt die Daten aus der Tabelle an die Labels weiter
Private Sub cmdsuchen_Click()
On Error GoTo fehler
Dim db As Database
Dim rs As Recordset
Dim Krit As String
If IsNull(lblnummer1) Then
MsgBox "Bitte Such-ID eingeben.", 64
lblartikel1.SetFocus
Else
Set db = CurrentDb()
Set rs = db.OpenRecordset("Datensatz", dbOpenSnapshot)
Krit = "Auktionsnummer='" & lblnummer1 & "'"
rs.FindFirst Krit
If rs.NoMatch Then
MsgBox "Die von Ihnen eingegebene ID wurde in der Datenbank nicht gefunden.", 64, "http://www.access-home.de"
Else
lblartikel1 = rs!Artikel
lblnummer1 = rs!Auktionsnummer
lblename = rs!eBayName
lblName = rs!Name
lblstrasse = rs!Straße
lblplz = rs!PLZ
lblort = rs!Ort
lblgebot = rs!Gebot
lblporto = rs!Porto
lblgesamt = rs!Gesamtpreis
End If
End If
ende:
Exit Sub
fehler:
MsgBox Err.Description
Resume ende
End Sub
Private Sub lblgebot_BeforeUpdate(Cancel As Integer)
Dim Gebot As Double, Porto As Double
Gebot = lblgebot
Porto = lblporto
lblgesamt = Gebot + lblporto
End Sub
Private Sub cmddruck_Click()
If lblporto > 4 Then
On Error GoTo Err_cmddruck_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Druck"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_cmddruck_Click:
Exit Sub
Err_cmddruck_Click:
MsgBox Err.Description
Resume Exit_cmddruck_Click
Else
On Error GoTo Err_cmddruck_Click
Dim stDocName1 As String
Dim stLinkCriteria1 As String
stDocName1 = "Paeckchen"
DoCmd.OpenForm stDocName1, , , stLinkCriteria1
Exit Sub
MsgBox Err.Description
Resume Exit_cmddruck_Click
End If
End Sub
-
AW: VBA Datensatz
Starte mal den Debugger und sieh nach, ob er den Wert auch wirklich findet.
Btw. für was ist das zweite & am Ende des Find-Kriteriums?
-
AW: VBA Datensatz
Hi,
also der Debugger meldet nichts, und das zweite und kann ich nicht weg nehmen, weil der Debugger dann nen Fehler meldet.
-
AW: VBA Datensatz
Welcher Fehler kommt da, wenn ich Fragen darf?
-
AW: VBA Datensatz
Es kommt gar keine Fehlermeldung, es ist nur so, daß er die Daten immer in die erste Reihe der Tabelle schreibt und nicht in die Reihe, die ich gesucht habe!
-
AW: VBA Datensatz
Also ich habe jetz schon etwas rausgefunden! Jetzt habe ich aber noch ein problem und zwar in der Zeile:
.Open "Select * from Datensatz where (Auktionsnummer = lblnummer1)", conn, adOpenKeyset, adLockOptimistic
Dort kommt immer eine Fehlermeldung, das kein Wert eingetragen wurde. aber unter lblnummer1 wird mir ein Wert ausgegeben. Und wenn ich für lblnummer1 z.b. 1000 eintrage funktioniert es auch ohne Fehler. Kann mir jemand sagen, woran das liegt??