PDA

Vollständige Version anzeigen : Hilfe, bin hier am durchdrehen!


dannimausi
07.11.2001, 07:10
Hallo!

Ich hab ein Riesenproblem, schon alles probiert was mir dazu eingefallen ist, und nichts hat geholfen.

Dieser Code gibt mir schon bei den Set-Befehlen immer den Fehler 3265 "Item not found in this collection" aus.

Warum? Was kann ich dagegen tun????

Dim dbCurrentDatabase As database
Dim tblSupportWPS, tblWPSStandaardElementen, Recordset As Recordset
Dim qryOverzichtAssWPS As QueryDef
Dim i, j As Integer

Set dbCurrentDatabase = DBEngine(0)(0)
Set tblSupportWPS = dbCurrentDatabase.Recordsets(31)
Set tblWPSStandaardElementen = dbCurrentDatabase.Recordsets(43)
Set qryOverzichtAssWPS = dbCurrentDatabase.QueryDefs(17)
qryOverzichtAssWPS.Parameters(0) = Forms![frmOfferteBasis]![OfferteNummer]
qryOverzichtAssWPS.Parameters(1) = Forms![frmOfferteBasis]![fsubOfferteBasis].[Form]![txtAssortimentsID]
Set Recordset = qryOverzichtAssWPS.OpenRecordset()

Recordset.MoveFirst
tblWPSStandaardElementen.MoveFirst
j = 0
For i = 47 To 1 Step -1
tblSupportWPS.AddNew
tblSupportWPS!OfferteNummer = Forms![frmOfferteBasis]![OfferteNummer]
tblSupportWPS!AssortimentsID = Forms![frmOfferteBasis]![fsubOfferteBasis].[Form]![txtAssortimentsID]
tblSupportWPS!WPSID = tblWPSStandaardElementen.Fields(0)
tblSupportWPS!Aantal = Recordset.Fields(j)
tblSupportWPS.Update
Recordset.MoveNext
tblWPSStandaardElementen.MoveNext
j = j + 1
Next i

Kann mir wer helfen???? Es ist echt wichtig!

Gruss,
Danni

erwin
07.11.2001, 07:53
wie wär's mit einem Blick i.d. OL-Hilfe

**Dim tblSupportWPS, tblWPSStandaardElementen, Recordset As Recordset
Dim tblSupportWPS as DAO.recordset, tblWPSStandaardElementen as DAO.Recordset, Recordset As DAO.Recordset
...
**Set dbCurrentDatabase = DBEngine(0)(0)
Set dbCurrentDatabase = CurrentDatabase

**Set tblSupportWPS = dbCurrentDatabase.Recordsets(31)
Set tblSupportWPS = dbCurrentDatabse.Openrecordset("tblSupportWPS",dbopendynaset)
...

HTH erwin...

dannimausi
07.11.2001, 09:29
Hi Erwin!

Danke! Die Fehlermeldung ist weg.

Funktioniert zwar in ein und derselben Database ungefähr schon 20x ohne die DAOs aber okay...

Kannst du mir vielleicht auch noch sagen, warum mir das Dingen jetzt eine Endlosschleife gibt???

Danke schon im voraus!

CU
Danni

dannimausi
07.11.2001, 12:14
Das Problem mit der Endlos-Schleife hat sich auch erledigt.

Dafür bekomme ich jetzt eine Fehlermeldung:
The expression you entered refers to an object that is closed or doesn't exist.

Wieso denn nun das schon wieder???

Wie's scheint bin ich wirklich zu dumm dazu...

Gruss,
Danni

Anne Berg
07.11.2001, 12:40
Es ist in der Regel sehr hilfreich zu wissen, auf welche Code-Zeile sich eine Fehlermeldung bezieht. Dazu kann man den Code im Debugging-Modus durchlaufen (entspr. Breakpoint setzen) und Zeile für Zeile testen und sich im Testfenster den Inhalt der verfügbaren Variablen und Objekte ansehen.

Außerdem ist die Fehlermeldung ja recht 'sprechend', d.h. es wurde ein Objekt (Recordset etc.) verwendet, nachdem es bereits geschlossen wurde. Den obenstehenden Code betrifft das wohl eher nicht.

dannimausi
07.11.2001, 13:11
Ich hab keine Ahnung auf welche Codezeile sich die Fehlermeldung bezieht. Wenn ich den Code Schritt für Schritt prüfe geht alles klar, nur zur Laufzeit dann nicht.

Die Fehlermeldung muss sich auf diesen Code beziehen, da alles andere vorher einwandfrei gelaufen ist:
Dim dbCurrentDatabase As database
Dim tblSupportWPS As DAO.recordset
Dim tblWPSStandaardElementen As DAO.recordset
Dim recordset As DAO.recordset
Dim qryOverzichtAssWPS As DAO.QueryDef
Dim i, j As Integer

Set dbCurrentDatabase = DBEngine(0)(0)
Set tblSupportWPS = dbCurrentDatabase.OpenRecordset("tblSupportWPS", dbOpenTable)
Set tblWPSStandaardElementen = dbCurrentDatabase.OpenRecordset("tblWPSStandaardElementen", dbOpenTable)
Set qryOverzichtAssWPS = dbCurrentDatabase.QueryDefs("qryOverzichtAssWPS")
qryOverzichtAssWPS.Parameters(0) = Forms![frmOfferteBasis]![OfferteNummer]
qryOverzichtAssWPS.Parameters(1) = Forms![frmOfferteBasis]![fsubOfferteBasis].[Form]![txtAssortimentsID]
Set recordset = qryOverzichtAssWPS.OpenRecordset(dbOpenTable)

tblWPSStandaardElementen.MoveFirst
recordset.MoveFirst
j = 2
Do
If tblWPSStandaardElementen.EOF = True Then
Exit Do
Else
tblSupportWPS.AddNew
tblSupportWPS!OfferteNummer = Forms![frmOfferteBasis]![OfferteNummer]
tblSupportWPS!AssortimentsID = Forms![frmOfferteBasis]![fsubOfferteBasis].[Form]![txtAssortimentsID]
tblSupportWPS!WPSID = tblWPSStandaardElementen.Fields(0)
tblSupportWPS!Aantal = recordset.Fields(j)
tblSupportWPS.Update
tblWPSStandaardElementen.MoveNext
j = j + 1
End If
Loop

Kannst du mir helfen?

Gruss,
Danni

Anne Berg
07.11.2001, 14:32
Hallo Danni,

ich kann an dem Code-Auszug nichts 'verdächtiges' entdecken - der Fehler passiert wohl woanders, anschließend. Kannst Du das nicht durchs Debuggen weiter verfolgen?

dannimausi
07.11.2001, 14:37
Wie gesagt, beim Debuggen ergibt sich überhaupt nichts. Und vorher hat es auch funktioniert bevor ich diesen Code da reingepackt hab...

Vielleicht passiert ja mal ein Wunder...

Trotzdem danke!

Gruss,
Danni

Stema
07.11.2001, 15:10
Hallo Danni,

ich kann keine Fehlerroutine bei Dir entdecken. Demnach müßte, wenn der Fehler auftritt, eine MsgBox erscheinen, in der Du zwischen "Cancel", "Debug" und "Help" wählen kannst. Wenn Du hier "Debug" wählst, dann markiert Access die fehlerhafte Zeile gelb.

Wenn Du dann mal diesen Code postest und sagst in welcher dieser Zeilen der Fehler auftritt, dann kann Dir sicher jemand helfen.