Fragensteller
Requery eines Formulars von einem anderen Formular

Frage
-
Hallo Zusammen,
ich habe ein Formular, dass beim schließen prüft, ob ein bestimmtes Feld einen Wert hat. Hat das Feld keinen Wert wird das schließen abgebrochen damit der Nutzer den Wert setzt.
Jetzt will ich aber genau dieses geöffnete Formular aus einem anderen Formular heraus schließen und zwar unabhängig davon ob der Wert gesetzt ist oder nicht. Da der ganze Datensatz dabei gelöscht wird ist es auch völlig egal welcher Wert in dem Feld steht.
Daher habe ich mir überlegt vor dem Schließen in das Betreffende Feld einfach einen Wert zu schreiben:
Forms!MeinFormular!MeinFeld = 1
Das scheint aber wohl nicht zu reichen. Ich muss wohl vorher noch ein Requery oder so duchführen? Aber das Requery Forms!MeinFormular!Form.requery
geht nicht. Ich bekomme die Meldung, dass das recordset nicht aktualisert werden kann und der Code hält an. Starte ich ihn einfach wieder geht es dann doch.
Hat jemand eine Idee wie ich es hinbekomme, dass men Code durchläuft?
Danke für Hilfe und viele Grüße
Patrick
Alle Antworten
-
Hallo,Patrick Pohlmann wrote:> ich habe ein Formular, dass beim schließen prüft, ob ein bestimmtes Feld> einen Wert hat. Hat das Feld keinen Wert wird das schließen abgebrochen> damit der Nutzer den Wert setzt.>> Jetzt will ich aber genau dieses geöffnete Formular aus einem anderen> Formular heraus schließen und zwar unabhängig davon ob der Wert gesetzt> ist oder nicht. Da der ganze Datensatz dabei gelöscht wird ist es auch> völlig egal welcher Wert in dem Feld steht.>> Daher habe ich mir überlegt vor dem Schließen in das Betreffende Feld> einfach einen Wert zu schreiben:>> Forms!MeinFormular!MeinFeld = 1>> Das scheint aber wohl nicht zu reichen. Ich muss wohl vorher noch ein> Requery oder so duchführen?Woher weisst du das? Welche Meldung bekommst du in welcher Zeile?> Aber das Requery Forms!MeinFormular!Form.requery geht nicht. Ich bekomme> die Meldung, dass das recordset nicht aktualisert werden kann und der> Code hält an. Starte ich ihn einfach wieder geht es dann doch.>> Hat jemand eine Idee wie ich es hinbekomme, dass men Code durchläuft?Zeig mal den Code, die Stelle, wo er abbricht und die entsprechendeMeldung.Gruss - Peter--Mitglied im http://www.dbdev.org
-
Hallo Patrick,
Was ist denn "MeinFeld" für ein Feld? hat es einen Steuerelementinhalt, ist es an ein Rercordset-Feld gebunden?
Grundsätzlich kannst Du jedes Formular von einem anderen Formular aus aktualisieren, bei deiner Syntax muss allerdings das erste Requery weg. Aus dem 2. Ausrufezeichen musst Du einen Punkt machen, weil Form ein eingebautes Property des Formulars ist.
Roland
It's no problem, it's just the syntax
-
Hallo Peter,
hier der Code:
Private Sub btn_TicketVerschieben_Click()
Dim strSQL As String
Dim strTicketNrZiel As String, strTicketNrQuelle As String
Dim intAntwort As String
Dim stLinkCriteria As StringstrTicketNrQuelle = Me!txt_TicketNrQuelle
strTicketNrZiel = Me!TicketNr'Fragen ob verschoben und gelöscht werden kann
intAntwort = MsgBox("Wollen Sie wirklich die Tickverfolgungseinträge des Tickets " & strTicketNrQuelle & " in das " & _
"Ticket " & strTicketNrZiel & " verschieben und das Ticket " & strTicketNrQuelle & " löschen?", vbOKCancel, "Tickets vereinigen")If intAntwort = vbCancel Then
Exit Sub
End If'Kategoie für zu löschendes Ticket auswählen um es löschen zu können
Forms!frm_Tickets!Kategorie = 1
Forms!frm_Tickets.Form.Requery'Ticketverfolgung verschieben
strSQL = "UPDATE dbo.OS_Ticketverfolgung " & _
"Set TicketNr = " & strTicketNrZiel & _
" WHERE (TicketNr = " & strTicketNrQuelle & ")"DoCmd.RunSQL strSQL
'Ticket löschen
strSQL = "DELETE FROM dbo.OS_Tickets " & _
"WHERE (TicketNr = " & strTicketNrQuelle & ")"DoCmd.RunSQL strSQL
'Zielticket anzeigen
stLinkCriteria = "[TicketNr]=" & strTicketNrZiel
DoCmd.Close acForm, "frm_Tickets"
DoCmd.OpenForm "frm_Tickets", , , stLinkCriteria, , , stLinkCriteria
DoCmd.Close acForm, "frm_Tickets_alle_Liste"End Sub
Kann es daran liegen, dass das zu bearbeitenden Formular auch ein Unterformular hat?
Nochmal Danke für die Hilfe.
Viele Grüße
Patrick
-
Hallo Patrick,
Patrick Pohlmann wrote:
Private Sub btn_TicketVerschieben_Click()
Dim strSQL As String
Dim strTicketNrZiel As String, strTicketNrQuelle As String
Dim intAntwort As String
Dim stLinkCriteria As String
strTicketNrQuelle = Me!txt_TicketNrQuelle
strTicketNrZiel = Me!TicketNr
'Fragen ob verschoben und gelöscht werden kann
intAntwort = MsgBox("Wollen Sie wirklich die Tickverfolgungseinträge des Tickets " & strTicketNrQuelle & " in das " & _
"Ticket " & strTicketNrZiel & " verschieben und das Ticket " & strTicketNrQuelle & " löschen?", vbOKCancel, "Tickets vereinigen")
If intAntwort = vbCancel Then
Exit Sub
End If
'Kategoie für zu löschendes Ticket auswählen um es löschen zu können
Forms!frm_Tickets!Kategorie = 1
Forms!frm_Tickets.Form.RequeryDer Zweck dieser beiden Zeilen erschliesst sich mir nicht. Kannst du
erklaeren, was das bezwecken soll?'Ticketverfolgung verschieben
strSQL = "UPDATE dbo.OS_Ticketverfolgung " & _
"Set TicketNr = " & strTicketNrZiel & _
" WHERE (TicketNr = " & strTicketNrQuelle & ")"strTicketNrQuelle und ...Ziel sind als Strings deklariert, daher wuerde bei
numersicher TicketNr eine implizite Konvertierung stattfinden, was zwar
nicht sauber ist, aber immer noch funktioniert. Sollten sich aber
tatsaechlich alphanumerische Werte in den TicketNr befinden, waere der
Update wirkungslos. Die Syntax muesste danach so lauten:" WHERE TicketNr = '" & strTicketNrQuelle & "'"
(man beachte die einfachen Hochkommas vor bzw. zwischen den doppelten)
DoCmd.RunSQL strSQL
Hier solltest du besser schreiben:
CurrentDb.Execute strSQL, dbFailOnError
Siehe auch http://www.donkarl.com?FAQ2.4
'Ticket löschen
strSQL = "DELETE FROM dbo.OS_Tickets " & _
"WHERE (TicketNr = " & strTicketNrQuelle & ")"
DoCmd.RunSQL strSQLHier ebenfalls.
Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com