Hallo ich mal wieder ;)
Folgender Code hab ich aus donKarl um einen bestimmten Datensatz in einem neuen Formular anzuzeigen.
Private Sub Form_Current()
Dim rs As DAO.Recordset
Set rs = Forms!frmKunKorr.RecordsetClone
'im RecordsetClone von Formular2 die Id aus dem aktuellen Formular finden
rs.FindFirst "Kun_id = " & Me!Kun_id
If Not rs.NoMatch Then
'Anzeige im Formular2 mit dessen RecordsetClone synchronisieren
Forms!frmKunKorr.Bookmark = rs.Bookmark
End If
Set rs = Nothing
End Sub
Nun bekomme ich aber eine Fehlermeldung das er frmKunKorr nicht findet also Access kann diese Form nicht finden.
Hab natürlich meine Schreibweise kontrolliert und na ja das Formular existiert.
Warum findet Access denn diese Form nicht?
Was habe ich übersehen??
Vielen Dank!!!!
Glg Albert
Hallo habe nun den Code geändert aber noch immer nicht ganz was ich brauche.
Mit dem code den ich jetzt so bearbeitet habe gibt es nun folgendes problem.
Private Sub Form_Current()
If CurrentProject.AllForms!frmKunKorr.IsLoaded Then
Dim rs As DAO.Recordset
Set rs = Forms!frmKunKorr.RecordsetClone
'im RecordsetClone von Formular2 die Id aus dem aktuellen Formular finden
rs.FindFirst "Kun_id_f = " & Me!Kun_id
If Not rs.NoMatch Then
'Anzeige im Formular2 mit dessen RecordsetClone synchronisieren
Forms!frmKunKorr.Bookmark = rs.Bookmark
End If
rs.Close
Set rs = Nothing
Else: DoCmd.OpenForm "frmKunKorr", , , "Kun_id_f = " & Me!Kun_id
End If
End Sub
jetzt zeigt es mir die frmKunKorr an wenn ich in meinem Formular auf die Kun_id klicke (Mein Formular ist geteilt) also im Datenblatt.
1. Zeigt es mir jetzt nur die Kun-id an wenn ich eine Korrespondenz habe ansonsten bleibt die Kun_id leer?
2. Öffnet es mir immer die frmKunKorr.
Ich habe aber einen button erstellt der mir eigentlich die frmKuKorr anzeigen soll und das mit der jeweiligen Kun_id die ich gerade ausgewählt habe.
Also stimmt das ganze noch nicht ganz.
Hoffe jemand kennt dieses Problem und könnte mir helfen.
Vielen Dank!!!
Hallo noch mals zu diesen Problem.
Hab jetzt schon mehrere Dinge probiert aber immer noch kein richtiges Ergebniss.
Wenn ich nun nur diesen Code in mein click event geben öffnet es mir auch schon das Formular.
Nur habe ich immer noch das selbe problem das der Kun_id nicht angezeigt wird wenn kein Eintrag vorhanden ist.
DoCmd.OpenForm "frmKunKorr", , , "Kun_id_f = " & Me!Kun_id
das wäre der Code..
Habe ich vieleicht einen Fehler im frmKunKorr
Weis leider nicht weiter und würde gern mehrere Schaltflächen in meinen Hauptformular einbinden um verschiedene Unterformulare zu öffnen.
Danke
Hallo,
verstehe ich das richtig?
Zitat...das der Kun_id nicht angezeigt wird wenn kein Eintrag vorhanden ist....
Ja was willst du denn auch sehen, wenn es keinen Datensatz gibt?
Hallo Peter,
Na ja das stimmt das ich dann nichts sehen kann!
Ja das ist mir schon klar das ich keine Daten sehen kann aber ich muss dann die Kun_id seperat eingeben.
Wenn ich z.B. ein Unterformular erstelle und in eine Form gebe erscheint ja immer die dazugehörige Kun_id
und wird dann in die richtigen Kunden zugeteilt.
Weist was ich meine??
Naja, ich hoffe dass ich dich verstanden habe.
mit....
DoCmd.OpenForm "frmKunKorr", , , "Kun_id_f = " & Me!Kun_id
übergibst du die KundenID nicht ans Formular oder eines der Formularfelder sondern bestimmst, welcher Datensatz angezeigt werden soll.
Existiert nun kein passender DS, dann wirst du ein leeres Form erhalten.
Setze mal probeweise folgende Zeile nach dem Formularaufruf:
Forms!frmKunKorr!DeinKundenIDFeld=" & Me!Kun_id
Damit müsste dann eigentlich die KundenID in das KundenID-Feld des geöffneten Formulars eingetragen werden.
Hallo Peter,
danke für Deine Antwort!
Gehört dieser Code nun in das neue also das formular das aufgemacht wird?
Also meines heist frmKunKorr
und wenn ja wird dieser in nach Aktualisierung als ereigniss gegeben??
Vielen Dank
Folgenden Code hab ich probiert
Private Sub Form_Open(Cancel As Integer)
Forms!frmKunKorr!Kun_id_f = " & Me!Kun_id"
End Sub
Da bekomme ich eine Fehlermeldung ... diesen Objekt kann kein Wert hinzugefügt werden :(
Hallo
nicht ins Formular frmKunKorr !
sondern nach dem Befehl zum Öffnen des Formulars...
...
...
rs.Close
Set rs = Nothing
Else
DoCmd.OpenForm "frmKunKorr", , , "Kun_id_f = " & Me!Kun_id
Forms!frmKunKorr!Kun_id_f=" & Me!Kun_id
End If
End Sub
Sollte eigentlich funktionieren.
p.s. ich habe nach Else den : rausgenommen...
Möglicherweise gibt es jetzt noch Probleme, wenn das Form nicht schnell genug geöffnet wird und somit das Formularfeld nicht angesprochen werden kann.
Hallo,
eigentlich benutzt Du gar kein "Unter-" Formular, sondern nur ein separat geöffnetes Form...
Die "Verknüpfung" der Schlüsselfelder,die in einem UFO-Steuerelement von Access selber gemanaged wird, mußt Du in Deinem Fall selber zusammenbasteln:
Sub btnDetailForm_Click()
DoCmd.OpenForm "frmKunKorr", , , "Kun_id_f = " & Me!Kun_id , , ,Me!Kun_id
End Sub
und im Form "frmKunKorr"
Sub Form_Load()
If not IsNull(Me.Openargs) Then Me!Kun_id_f.Defaultvalue =Me.Openargs
End Sub
und das Form Daten anfügen zuläßt.
Hallo Franz,
danke erstmals für Deine Antwort!!
Hab es auch probiert leider bekomme ich noch immer die Kun_id in mein Feld.
Es gibt auch keine Fehlermeldung.
Weis nicht was hier falsch ist :-[
Danke auf alle Fälle!
Hallo,
dann halt mal die DB hier hochladen (komprimiert/repariert und gezippt, mit ein paar authentischen Speildaten.)
Hallo Franz,
ja mach ich nur ich habe keine Version wo ich keine Daten drinnen habe ??
Auch kann ich meine db nicht mehr auf 2003 ändern.
Wie kann ich am schnellsten daten löschen?
Danke
Hallo,
es geht auch A2007 (A2010)..
Daten Löschen :
Entweder Löschabfrage(n) oder Tabelle öffnen und links oben klicken, um die gesamte Tabelle zu markieren, dann Taste <<Entf>> drücken.
Hallo Franz,
na schade jetzt bist weg :(
Hatte einiges zu tun um die db so zuverkleinern damit ich diese auch senden hab können.
HOffe Du kannst Sie Dir noch ansehen.
Vielen Dank
Albert
[Anhang gelöscht durch Administrator]
Hallo Albert,
in deiner DB fehlen 3 Formulare!
frmKunKorr, frmKunGruppe und frmKundenNummer
Beim Öffnen des Formulars frmKunden erscheinen die entsprechenden Fehlermeldungen.
Schieß' mal die Formulare schnell nach bitte!
Hallo Peter,
ich konnte leider die DB nicht ganz senden da sie sonst zu gross ist.
Wie soll ich Dir diese nun nachsenden??
Hab sie in eine neue DB eingefügt bekomme nun aber auch wieder fehlermeldungen da ander Formulare nicht darauf zugreifen können :(
WERd noch verrückt ggg
Danke
Hi,
stell mal die DB mit den 3 Forms rein, ich versuch sie dann in die erste einzubinden
sollte unterweg sein.
[Anhang gelöscht durch Administrator]
Hallo Albert,
hat tadellos geklappt - es fehlt allerdings noch immer das frmKundenNummer :-\
oh kommt sofort :)
tut mir leid!!!
kommt sofort nachgeliefert ggg
Bitteschön :)
[Anhang gelöscht durch Administrator]
Hallo Albert,
der Aufruf des Formulars frmKunKorr und setzen der Kun_id_f in diesem funktioniert nun.
Auslöser ist der Aufrufbutton im frmKunde.
Code hinter dem Button Korrespondenz (der erste in der Liste) ist von mir dokumentiert.
Das Ereignis 'Beim Öffnen' des frmKunKorr aber habe ich stillgelegt, da sie nicht benötigt wird.
Schau mal rein ich glaub' das passt so... ;)
p.s. lies mal meine Antwort #8 ::) ;)
[Anhang gelöscht durch Administrator]
Hallo Peter,
danke na die Kun_id wird angezeigt aber wenn ich es schließe bekomme ich auch noch eine Fehlermeldung die sagt das es keinen Null wert geben darf??
Hab auch was hinzugefügt aber noch immer :(
Danke auf alle Fälle schon mal!!!!!!!!!!!!!
Peter,
hab es nun geschafft aber was ist wenn man irrtümlicherweise diesen button klickt und wieder zumachen will dann hat man glaub ich ein problem das der Datensatz eventuell nicht speichert oder bzw. zumacht und die Id verlohren geht.
Weist was ich meine?
Also Korrespondenz nr 100 ist leer
Hallo,
das stimmt nicht ganz Albert.
Wenn du einen Kunden anlegst und Korrespondenz klickst wird erst einmal die Kun_id_f ins Formular übertragen.
Wenn du dann eine Korrespondenz auswählst - ich habe einen Eintrag in der Tablle erstellt n- dann bekommst du die KorrespondenzID ebenfalls ins Formular
Danach füllst du das Datum aus und klickst auf das Info-Feld - Es öffnet sich eine neue Eingabeform und da gibst irgendwas ein.
Dann schließ mal das frmKunKorr - KEINE Fehlermeldung.
D.h. ALLE Felder müssen ausgefüllt werden!
p.s.
Für den von dir beschriebenen Fall - irrrtümlich öffnen - musst du eine Fehlerbehandlung einbauen!
Ja habs gerade auch gemerkt und danke!!!
Ja fehlerbehandlung ggg da wären wir wieder beim nächsten :(
bwoahhhhhhhh
Du hast ja jetzt meine zwei varianten gesehen eines mit den Registern und eines mit eben den Buttons.
Was denkst Du was ist den besser??
Oder wie soll ich die db am besten mit formularen bestreiten?
Danke
Hallo Albert,
Fehlerbehandlung...
schreibe im Formular frmKunKorr:
Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 3058 Then ' Indexfehler durch nicht eingetragene Daten
Response = acDataErrContinue
DataErr = 0
End If
End Sub
.... und ändere den Code im Click-Ereignis des Button im frmKunde:
Private Sub cmdKorres_Click()
On Error GoTo errhandle
DoCmd.OpenForm "frmKunKorr", , , "Kun_id_f =" & Me!Kun_id
'EDIT database ------------------------------------------
'----Setzt die Kun_id_f im geöffnetetn Formular ---------
'----wenn kein relevanter Datensatz gefunden werden kann-
'----gilt dann, wenn DEIN Code weiter unten wieder-------
'----aktiviert wird. Nachfolgende Bedingung besteht unten bereits!
If IsNull(Forms!frmKunKorr!Kun_id_f) Then
Forms!frmKunKorr!Kun_id_f = Me!Kun_id
End If
'--------------------------------------------------------
' Dim rs As DAO.Recordset
'
' If CurrentProject.AllForms!frmKunKorr.IsLoaded Then
'
' Set rs = Forms!frmKunKorr.RecordsetClone
'
' 'im RecordsetClone von Formular2 die Id aus dem aktuellen Formular finden
' rs.FindFirst "Kun_id_f = " & Me!Kun_id
' If Not rs.NoMatch Then
' 'Anzeige im Formular2 mit dessen RecordsetClone synchronisieren
' Forms!frmKunKorr.Bookmark = rs.Bookmark
' End If
' rs.Close
' Set rs = Nothing
'Else
' DoCmd.OpenForm "frmKunKorr", , , "Kun_id_f = " & Me!Kun_id
' If IsNull(Forms!frmKunKorr!Kun_id_f) Then
' Forms!frmKunKorr!Kun_id_f = Me!Kun_id
' End If
'End If
Exit Sub
errhandle:
If Err.Number = 3075 Then 'Es wurde das Form aus einem leeren Datensatz aufgerufen
Err.Clear
Exit Sub
End If
End Sub
Ob du Variante 1 oder 2 verwendest hängt von deiner Arbeitsweise ab.
Kompakter wäre natürlich die mit den Registern.
Danke Peter!!
hast mir wieder sehr viel geholfen vielen Dank!
Für die Rechnungslägung hätte ich noch eine Frage und zwar sind da ja einige Tabellen die dort miteinander verlinkt sind.
Wie soll man hier den vorgehen?
War einige Zeit mit anderen Dingen beschäftigt und die Db ist wohl noch ziehmlich gleich wie sie mal war :(
Es geht eh schon viel besser aber halt noch nicht so das ich es nützen kann... Leider
Hallo,
also ich denke, dass es sinnvoll sein wird die Datenmäßige Erstellung einer Rechnung mit HF und UF zu bewerkstelligen.
D.h. Ein Formular 'frmRechnung' für die Aufnahme der Daten der Tabelle tblRechnung und dazu ein
UF 'UfrmRechDetails' das über die Felder Rech_id (HF) und Rech_id_f (UF) verknüpft ist, zur Aufnahme der Daten für die tblRechDetails.
Wenn du das UF als Endlosform erstellst hast du relativ schöne Möglichkeiten auch die Kombis für Steuersatz und Projekte unterzubringen.
Für den Ausdruck der Rechnung - natürlich ein schöner Bericht als Rechnungsformular - ist dann aber auch anzudenken,
dass auf Grund der nicht erfassbaren Informationen aus dem verrechneten Projekt (das wären einzelne Posten in den Rechnungsdetails)
ein entsprechender Datenauszug beizulegen ist, aus dem hervorgeht WAS dem Kunden in Rechnung gestellt wird.
Peter,
ok na das sollte ich schaffen nur wie mache ich es mit den Kunden?
Durch ein Kombifeld den Kunden auswählen?
Und was ist mit den Details also wenn ich verschiedene Produkte den Kunden verrechnen möchte
da sind ja wieder viele andere Tabellen miteinander verknüpft die ich ja nicht alle einfach so in das formular bekomme oder?
Danke
Hallo Albert,
da sich die Rechnungsgeschichte als neues, unabhängiges Thema darstellt,
solltest du diesen Thread erst mal abschließen.
Wegen der Rchnungssache eröffne dann bitte wieder einen neuen Fred. :D
So nach dem Motto - neue Frage neues Glück ;D :D ;)
Ja danke erstmal Super Peter!!
Bist mein Hero ggg