PDA

Vollständige Version anzeigen : ist das ein Zeitproblem ?


Netfoul
23.03.2004, 14:22
Hallo Tüftler,

hab wieder mal ne kleinigkeit.

Und zwar
in Tabelle-1 wird etwas selektiert, danach per SQL in Tabelle-2 kopiert
anschießend per SQL in Tabelle-1 gelöscht.

Nächster Schritt der DS wird in Tabelle-2 gesucht und dann knallts oder
eben auch nicht.
Dieser Datensatz ist kein aktueller Datensatz, das heißt er wird nicht
gefunden.
Schaue ich in die Tabelle-2 ist er auch da, überprüfe ich das Kriterium anhand einer Abfrage find ich den Eintrag auch wieder.
Und das allerkomischste daran ist je nach Lust und Laune findet er den
Datensatz.

Kann man irgendwie ne künstliche Pause einbauen, oder sollte man eine einbauen ? Oder gibt es eine möglichkeit eines "Tabellen.Requery" bovor gesucht wird .

Hat da zufällig jemand eine Idee ?

Andreas

Lanz Rudolf
23.03.2004, 14:30
Hallo
zeige einmal Deinen Code möglich das man dort etwas sieht

Netfoul
23.03.2004, 18:25
jo mach ich doch glatt.

möcht nur noch erwähnen, dass der Code in der letzten Zeile stehenbleibt.
und wenn ich dann F8 drücke gehts doch (manchmal ca. 80 %)glatt weiter
und es wird mir auch der DS angezeigt.



Y = Left(X, 3) & Mid(X, 5, 4) & Mid(X, 10, 1) & Mid(X, 12, 3) & Mid(X, 16, 2) & "*"

strSQL = "INSERT INTO tbl_erledigt ( AuftrNr, Kaz_ID, FE_OrdnNr, Prüfer_ID, PTage, LT_gesamt, Theorie, Beg_Dat, Beg_Zeit, End_Dat, End_Zeit, Erledigt, Nachschulung, Bemerkungen ) "
strSQL = strSQL & "SELECT tbl_Prüfungen.AuftrNr, tbl_Prüfungen.Kaz_ID, tbl_Prüfungen.FE_OrdnNr, tbl_Prüfungen.Prüfer_ID, tbl_Prüfungen.PTage, tbl_Prüfungen.LT_gesamt, tbl_Prüfungen.Theorie, tbl_Prüfungen.Beg_Dat, tbl_Prüfungen.Beg_Zeit, tbl_Prüfungen.End_Dat, tbl_Prüfungen.End_Zeit, tbl_Prüfungen.Erledigt, tbl_Prüfungen.Nachschulung, tbl_Prüfungen.Bemerkungen "
strSQL = strSQL & "FROM tbl_Prüfungen "
strSQL = strSQL & "WHERE (((tbl_Prüfungen.AuftrNr)Like'" & Y & "') AND ((tbl_Prüfungen.Storno)=False) AND ((tbl_Prüfungen.geändert)=False)); "

DoCmd.RunSQL strSQL

strSQL = "DELETE tbl_Prüfungen.*, [tbl_Prüfungen].[AuftrNr] "
strSQL = strSQL & "FROM tbl_Prüfungen "
strSQL = strSQL & "WHERE ((([tbl_Prüfungen].[AuftrNr])Like'" & Y & "')); "

DoCmd.RunSQL strSQL

Detailbereich.Visible = True
Me.Requery
Kombinationsfeld2.Requery
Kombinationsfeld0.Requery

strSQL = "SELECT tbl_erledigt.*, [tbl_erledigt].[AuftrNr] "
strSQL = strSQL & "FROM tbl_erledigt "
strSQL = strSQL & "WHERE ((([tbl_erledigt].[AuftrNr])Like'" & Y & "')); "


Set rs = CurrentDb.OpenRecordset("tbl_erledigt", dbOpenDynaset, dbSeeChanges)

rs.FindFirst "[AuftrNr] like '" & Y & "'"
If rs.NoMatch Then MsgBox "gibbet nich"
Me.Bookmark = rs.Bookmark

Lanz Rudolf
23.03.2004, 18:37
Hallo
Kanst Du Debug.Print ein setzen und die Resultate zeigen
Y = Left(X, 3) & Mid(X, 5, 4) & Mid(X, 10, 1) & Mid(X, 12, 3) & Mid(X, 16, 2) & "*"

strSQL = "INSERT INTO tbl_erledigt ( AuftrNr, Kaz_ID, FE_OrdnNr, Prüfer_ID, PTage, LT_gesamt, Theorie, Beg_Dat, Beg_Zeit, End_Dat, End_Zeit, Erledigt, Nachschulung, Bemerkungen ) "
strSQL = strSQL & "SELECT tbl_Prüfungen.AuftrNr, tbl_Prüfungen.Kaz_ID, tbl_Prüfungen.FE_OrdnNr, tbl_Prüfungen.Prüfer_ID, tbl_Prüfungen.PTage, tbl_Prüfungen.LT_gesamt, tbl_Prüfungen.Theorie, tbl_Prüfungen.Beg_Dat, tbl_Prüfungen.Beg_Zeit, tbl_Prüfungen.End_Dat, tbl_Prüfungen.End_Zeit, tbl_Prüfungen.Erledigt, tbl_Prüfungen.Nachschulung, tbl_Prüfungen.Bemerkungen "
strSQL = strSQL & "FROM tbl_Prüfungen "
strSQL = strSQL & "WHERE (((tbl_Prüfungen.AuftrNr)Like'" & Y & "') AND ((tbl_Prüfungen.Storno)=False) AND ((tbl_Prüfungen.geändert)=False)); "

Debug.Print strSQL
DoCmd.RunSQL strSQL

strSQL = "DELETE tbl_Prüfungen.*, [tbl_Prüfungen].[AuftrNr] "
strSQL = strSQL & "FROM tbl_Prüfungen "
strSQL = strSQL & "WHERE ((([tbl_Prüfungen].[AuftrNr])Like'" & Y & "')); "
Debug.Print strSQL
DoCmd.RunSQL strSQL

Detailbereich.Visible = True
Me.Requery
Kombinationsfeld2.Requery
Kombinationsfeld0.Requery

strSQL = "SELECT tbl_erledigt.*, [tbl_erledigt].[AuftrNr] "
strSQL = strSQL & "FROM tbl_erledigt "
strSQL = strSQL & "WHERE ((([tbl_erledigt].[AuftrNr])Like'" & Y & "')); "
Debug.Print strSQL

Set rs = CurrentDb.OpenRecordset("tbl_erledigt", dbOpenDynaset, dbSeeChanges)

rs.FindFirst "[AuftrNr] like '" & Y & "'"
If rs.NoMatch Then MsgBox "gibbet nich"
Me.Bookmark = rs.Bookmark


Wie ist rs definiert?

Netfoul
23.03.2004, 18:50
das sind erst einmal die Ausgaben


INSERT INTO tbl_erledigt ( AuftrNr, Kaz_ID, FE_OrdnNr, Prüfer_ID, PTage, LT_gesamt, Theorie, Beg_Dat, Beg_Zeit, End_Dat, End_Zeit, Erledigt, Nachschulung, Bemerkungen ) SELECT tbl_Prüfungen.AuftrNr, tbl_Prüfungen.Kaz_ID, tbl_Prüfungen.FE_OrdnNr, tbl_Prüfungen.Prüfer_ID, tbl_Prüfungen.PTage, tbl_Prüfungen.LT_gesamt, tbl_Prüfungen.Theorie, tbl_Prüfungen.Beg_Dat, tbl_Prüfungen.Beg_Zeit, tbl_Prüfungen.End_Dat, tbl_Prüfungen.End_Zeit, tbl_Prüfungen.Erledigt, tbl_Prüfungen.Nachschulung, tbl_Prüfungen.Bemerkungen FROM tbl_Prüfungen WHERE (((tbl_Prüfungen.AuftrNr)Like'1830504200201*') AND ((tbl_Prüfungen.Storno)=False) AND ((tbl_Prüfungen.geändert)=False));
DELETE tbl_Prüfungen.*, [tbl_Prüfungen].[AuftrNr] FROM tbl_Prüfungen WHERE ((([tbl_Prüfungen].[AuftrNr])Like'1830504200201*'));
SELECT tbl_erledigt.*, [tbl_erledigt].[AuftrNr] FROM tbl_erledigt WHERE ((([tbl_erledigt].[AuftrNr])Like'1830504200201*'));


jetzt hab ich rs so definiert

Dim rs As dao.Recordset

und vorher hatte ich es darüber probiert (ging auch nur manchmal)
'Set rs = Me.Recordset.Clone

ich hoffe Du siehst da noch durch

Netfoul
23.03.2004, 18:55
sorry ganz vergessen, die Fehlermeldung ist übrigends

Lzf 3159

Kein gültiges Lesezeichen

Lanz Rudolf
23.03.2004, 19:01
Hallo
noch etwas, mit was für einer Access version Arbeitest Du?

Netfoul
23.03.2004, 19:10
Access 2000 und XP, ist bei beiden gleich

Lanz Rudolf
24.03.2004, 11:42
Hallo
hier den Code for Formular "Frm_Auftrag_erlrdigt":

Option Compare Database
Option Explicit
Dim x As Variant
Dim y As Variant
Private Sub Befehl27_Click()
Kombinationsfeld0.SetFocus
Detailbereich.Visible = False
End Sub
Private Sub Befehl4_Click()
Dim strSQL As String
x = Kombinationsfeld0.Column(1)
If IsNull(x) Or x = "" Then
MsgBox "Bitte erst eine Auftragsnummer aussuchen !"
Exit Sub
End If
y = Left(x, 3) & Mid(x, 5, 4) & Mid(x, 10, 1) & Mid(x, 12, 3) & Mid(x, 16, 2) & "*"
'Insert
strSQL = "INSERT INTO tbl_erledigt ( AuftrNr, Kaz_ID, FE_OrdnNr, Prüfer_ID, PTage, LT_gesamt, Theorie, Beg_Dat, Beg_Zeit, End_Dat, End_Zeit, Erledigt, Nachschulung, Bemerkungen ) "
strSQL = strSQL & "SELECT tbl_Prüfungen.AuftrNr, tbl_Prüfungen.Kaz_ID, tbl_Prüfungen.FE_OrdnNr, tbl_Prüfungen.Prüfer_ID, tbl_Prüfungen.PTage, tbl_Prüfungen.LT_gesamt, tbl_Prüfungen.Theorie, tbl_Prüfungen.Beg_Dat, tbl_Prüfungen.Beg_Zeit, tbl_Prüfungen.End_Dat, tbl_Prüfungen.End_Zeit, tbl_Prüfungen.Erledigt, tbl_Prüfungen.Nachschulung, tbl_Prüfungen.Bemerkungen "
strSQL = strSQL & "FROM tbl_Prüfungen "
strSQL = strSQL & "WHERE (((tbl_Prüfungen.AuftrNr)Like'" & y & "') AND ((tbl_Prüfungen.Storno)=False) AND ((tbl_Prüfungen.geändert)=False)); "
DoCmd.RunSQL strSQL
'Delete
strSQL = "DELETE tbl_Prüfungen.*, [tbl_Prüfungen].[AuftrNr] "
strSQL = strSQL & "FROM tbl_Prüfungen "
strSQL = strSQL & "WHERE ((([tbl_Prüfungen].[AuftrNr])Like'" & y & "')); "
DoCmd.RunSQL strSQL
Detailbereich.Visible = True
Me.Requery
Me!Kombinationsfeld2.Requery
Me!Kombinationsfeld0.Requery
fGeheZu (y)
End Sub
Private Function fGeheZu(Auswahl As String)
Dim fSynchronisierung As Boolean
Dim rst As DAO.Recordset
fSynchronisierung = False
Set rst = Me.RecordsetClone
If rst.Bookmarkable = False Then
rst.Close
Exit Function
End If
Me.Painting = False
rst.FindFirst ("[AuftrNr] like '" & Auswahl & "'")
If rst.NoMatch Then
Me.Requery
Set rst = Me.RecordsetClone
If rst.NoMatch = False Then 'Erneute Suchen
fSynchronisierung = True
End If
Else 'Datensatz wurde gefunden
fSynchronisierung = True
End If
If fSynchronisierung = True Then
Me.Bookmark = rst.Bookmark
Else
MsgBox "FEHLER ??"
' DoCmd.GoToRecord , , acNewRec
End If
rst.Close
Set rst = Nothing
DoCmd.GoToControl "Kombinationsfeld2"
Me!Kombinationsfeld2.Requery
DoCmd.GoToControl "Kombinationsfeld0"
Me!Kombinationsfeld0.Requery
Me.Painting = True
End Function
Private Sub Form_Load()
UF_Jahr1.Caption = Year(Date) - 1
UF_Jahr1.OptionValue = Year(Date) - 1
UF_Jahr2.Caption = Year(Date)
UF_Jahr2.OptionValue = Year(Date)
UF_Jahr3.Caption = Year(Date) + 1
UF_Jahr3.OptionValue = Year(Date) + 1
OptQuartal.DefaultValue = Format(Date, "q")
Kombinationsfeld2.Requery
Kombinationsfeld2.Value = Kombinationsfeld2.ItemData(0)
Kombinationsfeld0.Requery
Kombinationsfeld0.Value = Kombinationsfeld0.ItemData(0)
Detailbereich.Visible = False
End Sub
Private Sub Kombinationsfeld2_AfterUpdate()
x = Kombinationsfeld2
Kombinationsfeld0.Requery
End Sub
Private Sub OptJahr_AfterUpdate()
Kombinationsfeld2.Requery
Kombinationsfeld2.Value = Kombinationsfeld2.ItemData(0)
Kombinationsfeld0.Requery
Kombinationsfeld0.Value = Kombinationsfeld0.ItemData(0)
End Sub
Private Sub OptQuartal_AfterUpdate()
Kombinationsfeld2.Requery
Kombinationsfeld2.Value = Kombinationsfeld2.ItemData(0)
Kombinationsfeld0.Requery
Kombinationsfeld0.Value = Kombinationsfeld0.ItemData(0)
End Sub
Private Sub Befehl28_Click()
On Error GoTo Err_Befehl28_Click
DoCmd.Close
Exit_Befehl28_Click:
Exit Sub
Err_Befehl28_Click:
MsgBox Err.Description
Resume Exit_Befehl28_Click
End Sub

Netfoul
24.03.2004, 18:04
Hallo Ruedi,

was soll ich sagen, es PFunzt gar mächtig, Klasse. :D

So wie ich das sehe hat Access doch Probleme mit der Zeit.
Aber Du hast es ja Prima gelöst das Problem.

Also nochmals "Besten Dank"

ich weiß schon warum ich hier öffters mal reinschaue.


Noch ne schöne Woche

bis demnächst

Andreas