Pittiplatsch Geschrieben 2. Mai 2005 Teilen Geschrieben 2. Mai 2005 Hi, jetzt hab ich schon wieder ein Problem mit diesem einen Formular. Kurz und knapp ich habe mittlerweile 3 Recordsets in einem Formular und weiß nicht, ob das überhaupt geht. Das Programm sagt mir jedenfalls immer wieder: Fehler beim Kompilieren Typen unverträglich :confused: :confused: Aber das sagt es erst beim 3. Recordset, die ersten beiden funktionieren prima. Oder liegt der Fehler irgendwo in diesem Abschnitt? sqlvo = "SELECT * FROM vorgang_vorab" vorgang = db2.OpenRecordset(rsvo, dbOpenDynaset)(0) Do While Not rsvo.EOF 'Programmablauf rsvo.MoveNext Loop Die einzelnen Variablen sind vorher richtig definiert. Wer kann mir helfen ????? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tauron Geschrieben 2. Mai 2005 Teilen Geschrieben 2. Mai 2005 Ich werd aus diesen Zeilen nicht schlau: vorgang = db2.OpenRecordset(rsvo, dbOpenDynaset)(0) Do While Not rsvo.EOF der erste Parameter in OpenRecordset (wo bei dir rsvo steht) sollte eigentlich die Tabelle bzw. Abfrage sein von der du das Recordset erstellen willst und vor dem Gleich die Variable die den Recordset aufnimmt.. ich denk mal du hast "vorgang" und "rsvo" einfach vertauscht -> siehe dein rsvo.EOF Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Meenzer Geschrieben 2. Mai 2005 Teilen Geschrieben 2. Mai 2005 Also so öffnet man ein Recordset: set rs = currentdb.openrecordset("SELECT * FROM TAB",dbopenforwardonly) if rs.recordcount > 0 then do while not rs.eof blbalbala loop end if Gruß Meenzer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 2. Mai 2005 Autor Teilen Geschrieben 2. Mai 2005 Hab den Fehler gefunden. Vertauscht war nix, aber irgendwie doppelt. Hatte weiter oben rsvo schon gefüllt. sqlvo = "SELECT * FROM vorgang_vorab" Set rsvo = db.OpenRecordset("vorgang_vorab") 'vorgang = db.OpenRecordset(rsvo, dbOpenDynaset)(0)<--Fehler Do While Not rsvo.EOF MsgBox (rsvo!Feld1) rsvo.MoveNext Loop Jetzt funktioniert es soweit ganz gut, er gibt mir den Inhal von Feld1 auch richtig aus(war jetzt erstmalzu Testzwecken). Allerdings versucht er die letzte Zeile der Tabelle, welche immer dabei ist für neue Datensätze, auch mit auszulesen und es kommt zu einer weiteren Fehlermeldung. Unzulässige Verwendung von NULL Wie kann ich das jetzt umgehen?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 2. Mai 2005 Autor Teilen Geschrieben 2. Mai 2005 Hallo Meenzer, Dein Tipist gut. Du hast nur das rs.MoveNext vor dem loop vergessen. Aber auch in diesem Fall hab ich das Problem mit der Meldung Unzulässige Verwendung von NULL Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tauron Geschrieben 2. Mai 2005 Teilen Geschrieben 2. Mai 2005 Vertauscht war nix, aber irgendwie doppelt. Hatte weiter oben rsvo schon gefüllt. Allerdings versucht er die letzte Zeile der Tabelle, welche immer dabei ist für neue Datensätze, auch mit auszulesen und es kommt zu einer weiteren Fehlermeldung.da lag der der Fehler, rsvo ist vom Typ Recordset und als erster Parameter für OpenRecordset brauch er nen String.. deswegen "Typen unverträglich" Eigentlich sollte er die Schleife nicht noch mal durchgehen wenn EOF erreicht ist.. in welcher Zeile wird der Fehler denn verursacht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Meenzer Geschrieben 2. Mai 2005 Teilen Geschrieben 2. Mai 2005 Hallo Meenzer, Dein Tipist gut. Du hast nur das rs.MoveNext vor dem loop vergessen. Oh ha, sorry, kann mal passieren. Das darf natürlich nicht fehlen. Danke für den Hinweis. Meenzer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 3. Mai 2005 Autor Teilen Geschrieben 3. Mai 2005 Jetzt weiß ich, warum diese Meldung kommt. Hab im Code doch die Zeile MsgBox (rsvo!Feld1) Wenn dieses Feld in der Tabelle aber leer ist, bekomm ich die Fehlermeldung mit der NULL. Ich muß also nur dafür sorgen, daß eine Prüfung auf den Inhalt stattfindet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 3. Mai 2005 Autor Teilen Geschrieben 3. Mai 2005 Das mit demAbfragen der Felder funzt ja jetzt. Die Daten werden auch ordentlich in die andere Tabelle überragen. Wie kann ich jetzt aber die einzelnen Datensätze löschen? Hab jetzt folgendes versucht: If (db.OpenRecordset(sqlvo, dbOpenDynaset)(0) = 0) Then rsvo2.AddNew rsvo2!Personalnummer = personNr rsvo2!Massnahmenummer = vorgang rsvo2.Update End If rsvo.Delete rsvo.MoveNext Der blaue Teil funktioniert, dieses Delete aber nicht. Wielautet hier der richtige Befehl zum Löschen eines Datensatzes? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Meenzer Geschrieben 3. Mai 2005 Teilen Geschrieben 3. Mai 2005 Hallo, post mal den ganzen Code, weil nur mit dem Ausschnitt kann es viele Fehler geben. Zum Beispiel was ist rsvo??? Auch ein Recordset? Wo verwendest Du es noch. Wenn man mal alles sieht, findet man den Fehler vielleicht schneller. Gruß Meenzer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 3. Mai 2005 Autor Teilen Geschrieben 3. Mai 2005 Hallo Meenzer, hier der entsprechende code: Dim db As DAO.Database Dim rsvo As DAO.Recordset 'Recordset für vorgang_vorab Dim rsvo2 As DAO.Recordset 'Recordset für tbl_Vorgangsdaten Dim personNr As String Dim vorgang As String Set rsvo = db.OpenRecordset("SELECT * FROM vorgang_vorab", dbOpenForwardOnly) Set rsvo2 = db.OpenRecordset("tbl_Vorgangsdaten") If rs.RecordCount > 0 Then Do While Not rsvo.EOF sqlvo = "SELECT COUNT(*) FROM tbl_Vorgangsdaten WHERE Personalnummer='" & personNr & "' AND Massnahmenummer='" & vorgang & "' " If (db.OpenRecordset(sqlvo, dbOpenDynaset)(0) = 0) Then rsvo2.AddNew rsvo2!Personalnummer = personNr rsvo2!Massnahmenummer = vorgang rsvo2.Update End If rsvo.Delete rsvo.MoveNext Loop End If Antwort des Programms Operation wird für diesen Objekttyp nicht unterstützt Ich hab irgendwie keine Ahnung, wo der Fehler liegt! :confused: :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tauron Geschrieben 3. Mai 2005 Teilen Geschrieben 3. Mai 2005 Du versuchst mit dem Delete den aktuellen Datensatz von rsvo zu löschen, da rsvo aber auf einem SELECT Statement basiert bringt er diese Fehlermeldung. Du kannst die Delete Anweisung so weit ich weiss nur auf Records anwenden, die direkt eine Tabelle als Ursprung haben (wie z.B. rsvo2). Könntest du z.B. lösen, indem du statt "rsvo.delete" direkt per Docmd.RunSQL ein DELETE auf die Tabelle ausführst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Meenzer Geschrieben 3. Mai 2005 Teilen Geschrieben 3. Mai 2005 Hi, vielleicht machst Du es mal ohne Recordsets. Zum Nachschauen benutze ich Dlookup und das Einfügen mache ich mit einem direkten SQL Statement. Zum Beispiel so (ungetestet): Dim db As DAO.Database Dim rsvo As DAO.Recordset Dim personNr As String Dim vorgang As String Dim TMP As Variant Set rsvo = db.OpenRecordset("SELECT * FROM vorgang_vorab", dbOpenForwardOnly) If rsvo.RecordCount > 0 Then Do While Not rsvo.EOF TMP = Dlookup("personNr","tbl_Vorgangsdaten","personNR = '" & rsvo!personNr & "'AND vorgang = "' & rsvo!vorgang & "'") If isNull(TMP) then currentdb.execute "INSERT INTO tbl_Vorgangsdaten (personNr, vorgang) VALUES ('" & rsvo!personNr & "','" & rsvo!vorgang & "');" End If rsvo.Delete rsvo.MoveNext Loop End If Ich hoffe es geht so. Gruß Meenzer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tauron Geschrieben 4. Mai 2005 Teilen Geschrieben 4. Mai 2005 Bei dem Code wird er wieder denselben Fehler bekommen, da rsvo.delete versucht aus einem SELECT zu löschen, siehe mein Post darüber. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 4. Mai 2005 Autor Teilen Geschrieben 4. Mai 2005 Hab das Problem jetzt gelöst. Nach dem alle Daten in den entsprechenden Tabellen gespeichert sind, geb ich die folgenden Befehle. DoCmd.SetWarnings False 'Warnmeldung ausschalten DoCmd.RunSQL "DELETE vorgang_vorab.* FROM vorgang_vorab;" 'Datensätze löschen DoCmd.SetWarnings True 'Warnmeldung wieder einschalten Das letzte Problem,welches ich jetzt noch hab,ist das Neuladen des Unterformulars. Hab ich bei einer PErson mehrere Vorgänge, hab ich im Unterformauch dementsprechend mehrere Zeilen. Nach dem Speichern hab ich diese Zeilen immernoch, nur das in den einzelnen Feldern #Gelöscht drinnsteht. Gibt es da einen speziellen Refresh-Befehl? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tauron Geschrieben 4. Mai 2005 Teilen Geschrieben 4. Mai 2005 das funktioniert mit Formularname.Requery .. dann wird das Formular neu mit Daten gefüllt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 4. Mai 2005 Autor Teilen Geschrieben 4. Mai 2005 Meinst du damit das komplette Formular? Hab diesen Befehl versucht, auf das Unterformular zu verwenden und das hat nicht geklappt. Ach ja,mit refresh auf das komplette Form klappt es insofern, daß es mir die vorhandenen Felder leert, aber ich hab immernoch mehrere Zeilen imUnterformular. genau das wollte ich aber umgehen. Nach dem Speichern und allem soll im Unterformular nur noch eine Zeile zu sehen sein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 4. Mai 2005 Autor Teilen Geschrieben 4. Mai 2005 Sorry, Fehler lag wiedermal bei mir. Ich hab nach dem me.refreshnochmals das Unterformular angesprochen, das wurde mir übelgenommen :floet: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tauron Geschrieben 4. Mai 2005 Teilen Geschrieben 4. Mai 2005 Sorry, Fehler lag wiedermal bei mir. Ich hab nach dem nochmals das Unterformular angesprochen, das wurde mir übelgenommen :floet:und ich hab mich etwas unklar ausgedrückt, sorry, ich meinte [Name des Unterformulars].Requery Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 4. Mai 2005 Autor Teilen Geschrieben 4. Mai 2005 Danke,jetzt klappts sowie es klappen soll. Sonst hätte ich folgendes machen müssen: DoCmd.Close DoCmd.OpenForm "frm_Personal" Und das hätte mir bei unseren Rechnern auf Arbeit doch irgendwie gewaltig das Programm ausgebremmst Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.