Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: rbaltermi am Mai 04, 2010, 11:30:20

Titel: Formular mit 2 Ufo
Beitrag von: rbaltermi am Mai 04, 2010, 11:30:20
Hallo zusammen

habe schon viel probiert gegoogelt und gelesen jedoch konnte ich keine lösung zu meinenm problem finden.

ich habe eine tbl mit den angaben der kunden (id, name, vorname ect...)
diese kunden können bei mir ware bestellen. ich habe die bestellung in zwei tbl geteilt,  Lieferscheine (id, bestelldatum, lieferdatum, kundenid) und bestelldetails (id, artikelnummer, menge, rabatt, lieferscheinid) die tbl's habe ich miteinander verknüpft.

ich erstellte ein frm kunden, mit einem ufo lieferscheine. das funktioniert soweit. jetzt möchte ich beim klicken auf den lieferschein die bestelldetails bearbeiten, würde auch mit einer schaltfläche für mich stimmen. wenn ich im ufo ein ufo erstelle dann filtert es mir die daten jedoch ist die bearbeitung unübersichtlich.

wer kann mir helfen?


danke für die antwort

roli
Titel: Re: Formular mit 2 Ufo
Beitrag von: database am Mai 04, 2010, 13:23:00
Hallo,

sollte im Prinzip so funktionieren, dass du durch das Klick-Ereignis auf UFo Lieferschein die Lieferschein-ID ausliest und damit die Datenherkunft des UFo Bestelldetails erzeugst.

Etwa so in der Form:


Private Sub UFoLieferschein_Click()

Dim rst as ADO.Recordset
Dim lngLiefescheinID As Long

lngLieferscheinID = me.id (Ist ein bisschen unglücklich gewählt, wenn alle id's gleich heissen)

Set rst = CurrentDB.OpenRecordset("SELECT * FROM tblBestelldetails WHERE Lieferschein_ID =" LngLieferscheinID)

Set Forms!DeinHaFo!DeinUFo.Form.RecordSet = rst

Set rst = Nothing

End Sub


HTH

Peter

p.s. Den Code verwendest du in den Click-Ereignissen jedes anklickbaren Feldes im UFo LS ansonsten muss er User immer den Datensatzmarkierer anklicken um die Daten ins UFo Bestelldetails zu bekommen.
Titel: Re: Formular mit 2 Ufo
Beitrag von: rbaltermi am Mai 04, 2010, 21:34:11
danke für den tipp

habe den code ausprobiert und mit meinen tabellendaten abgeglichen jedoch hängt da irgendetwas.

im code wird diese zeile markiert:

rst As ADO.Recordset

und eine meldung erscheint: fehler beim komplimieren: benutzerdefinierter typ nicht definiert


was mache ich falsch?

danke für die geduld

roli
Titel: Re: Formular mit 2 Ufo
Beitrag von: DF6GL am Mai 04, 2010, 22:51:09
Hallo,

nur ein Tippfehler:

Dim rst as DAO.Recordset


Wenn trotzdem eine Fehlermeldung kommt, im VBA-Editor unter Verweise den Haken bei der MS DAO 3.6 Library setzen.
Titel: Re: Formular mit 2 Ufo
Beitrag von: rbaltermi am Mai 27, 2010, 21:56:54
hallo zusammen

Habe immer noch das Problem beim erstellen des codes:

bei der folgenden zeile kommt immer diene fehlermeldung: fehler beim kompilieren: syntaxfehler

Zitat von: database am Mai 04, 2010, 13:23:00


Set rst = CurrentDB.OpenRecordset("SELECT * FROM tblBestelldetails WHERE Lieferschein_ID =" LngLieferscheinID)


1. gehe ich davon aus, dass in dieser zeile des codes der wert tblBestelldetails die tabelle Bestelldetails gemeint ist. muss man das kürzel tbl auch davorstellen?
2. Lieferschein_ID ist die Zelle in der Tabelle Bestelldetails in der die Lieferscheinid gespeichert ist. muss mann da das kürzel ID mit underline anhängen?

danke für die geduld mit mir



roli
Titel: Re: Formular mit 2 Ufo
Beitrag von: DF6GL am Mai 27, 2010, 22:09:11
Hallo,


Set rst = CurrentDB.OpenRecordset("SELECT * FROM tblBestelldetails WHERE Lieferschein_ID =" & LngLieferscheinID,dbOpenDynaSet)
Titel: Re: Formular mit 2 Ufo
Beitrag von: rbaltermi am Mai 27, 2010, 22:10:43
danke DF6GL du hast mir bereits zum zweiten mal aus der patsche geholfen.

kann es sein, dass in der Zeile:
"Set Forms!DeinHaFo!DeinUFo.Form.RecordSet = rst"
auch ein kleiner fehler drinn steckt? ich gehe auch davon aus, dass DeinHaFo in meinen fall das frm mit den Lieferscheinen ist, und das DeinUFo.Form das frm ist, in dem die gefilterten daten angezeigt erden, in meinem fall das frm_bestelldetail.

danke für die wertvollen tipps

roli
Titel: Re: Formular mit 2 Ufo
Beitrag von: rbaltermi am Mai 31, 2010, 16:28:04
hallo zusammen

da ich bis jetzt noch keine antwort erhalten habe gehe ich davon aus, dass meine vermutung

Zitatkann es sein, dass in der Zeile:
"Set Forms!DeinHaFo!DeinUFo.Form.RecordSet = rst"
auch ein kleiner fehler drinn steckt? ich gehe auch davon aus, dass DeinHaFo in meinen fall das frm mit den Lieferscheinen ist, und das DeinUFo.Form das frm ist, in dem die gefilterten daten angezeigt erden, in meinem fall das frm_bestelldetail.

richtig ist.

danke für alle rückmeldungen.
Titel: Re: Formular mit 2 Ufo
Beitrag von: DF6GL am Mai 31, 2010, 16:42:47
Hallo,


mhmm, auf was soll ich denn antworten? Ich kenne die Formular-Konstruktionen nicht.


Vermutlich muß rst vom Datentyp ADODB.Recordset und nicht DAO.Recordset sein, wenn man einen VBA-Recordset einem Form-Recordset zuweisen will.

Anderseits frage ich mich eher, warum das so kompliziert gemacht wird. Weise einfach der Eigenschaft "Datenherkunft" eines jedem Forms die entspr. Tabelle zu. Dann braucht es kein einzige Zeile Code.



Zur Bearbeitung der Bestelldetails öffnest Du einfach ein weiteres Form, das die passenden Datensätze anzeigt. ("Where-Condition"-Parameter bei Openform zur Filterung benutzen)
Titel: Re: Formular mit 2 Ufo
Beitrag von: database am Mai 31, 2010, 19:12:27
Hallo,

so dann fasse ich mal schnell zusammen:

1. Du hast ein Formular in dem die Daten EINES Kunden angezeigt werden.
2. Du hast in DIESEM Hauptformular (DeinHaFo) ein Unterformular erstellt, in dem offenbar ALLE Lieferscheine des ausgewählten Kunden angezeigt werden.
3. Du hast ein weiteres Unterformular, in dem du nun die Bestelldetail zu einem Lieferschein anzeigen willst, den du im ersten Unterformular selektierst.
4. Ich habe dir ein Beispiel gezeigt wie du das lösen KANNST - sorry für die 2 Tippfehler, ist leider passiert da ich den Code hier direkt in die Antwort geschreiben habe.

Zitatmuss man das kürzel tbl auch davorstellen
Nein, muss man nicht, ich persönlich arbeite jedoch mit Präfixangaben und daher erscheinen in meinen Postings auch immer wieder solche Dinge.

Zitatkann es sein, dass in der Zeile:
"Set Forms!DeinHaFo!DeinUFo.Form.RecordSet = rst"
auch ein kleiner fehler drinn steckt?
NEIN, der Code stimmt!

Mit dem ersten Codesnippet welches ausgeführt wird wenn man ins UNTERFORMULAR der Lieferscheine klickt, wird die Lieferschein-ID des angeklickten Datensatzes ausgelesen, wenn der Klick auf den Datensatzmarkierer gemacht wurde. Für alle anderen Fälle gilt die Empfehlung den gleichen Code in den Klick-Ereignissen aller anklickbarer Felder aufzurufen (was ja nicht zwangsweise heißt, dass er auch in jedem Klickereignis stehen muss sondern nur aufgerufen werden soll (Call ...))

@Franz
ZitatVermutlich muß rst vom Datentyp ADODB.Recordset und nicht DAO.Recordset sein, wenn man einen VBA-Recordset einem Form-Recordset zuweisen will
Nein, muss es nicht sein - geht auch mit DAO-Recordsets problemlos.

Zitatich gehe auch davon aus, dass DeinHaFo in meinen fall das frm mit den Lieferscheinen ist, und das DeinUFo.Form das frm ist, in dem die gefilterten daten angezeigt erden, in meinem fall das frm_bestelldetail
Fehlerhafte Annahme! DeinHaFo ist das Formular, auf dem sich das Unterformular befindet, also das Formular mit den oder dem Kunden - ich gehe davon aus, dass sich nichts an der Konstellation aus deinem 1. Posting geändert hat.
Mit DeinUFo bezeichnet das Unterformular in dem dann die Bestelldetails angezeigt werden sollen.
Mit .Form.Recordset wird diesem Unterformular die Datenherkunft der anzuzeigenden Datensätze mitgeteilt.
In deinem Fall also das Recordset, welches aus der SQL gebildet wurde.

Wenn du, wie mir scheint Probleme mit VBA hast, solltest du die AccessBordmittel verwenden, wie es dir DF6GL anempfohlen hat.

LG

Peter
Titel: Re: Formular mit 2 Ufo
Beitrag von: DF6GL am Mai 31, 2010, 21:14:39
Hallo,

@database:

DAO oder ADODB, das ist hier die Frage:

Das muss dann "neu" sein..  Jedenfalls glaube ich mich zu erinnern, dass vor einiger Zeit (in Vorgängerversionen) mir die Zuweisung eines DAO-Recordsets an die Datenherkunft einen gehörigen Streich gespielt hatte.

Wie auch immer, ich benutze solche Geschichten äußert selten (in diesen Zusammenhängen)...
Titel: Re: Formular mit 2 Ufo
Beitrag von: database am Mai 31, 2010, 21:20:34
Hallo,

@DF6GL
ich verwende es aktuell in einer 2007-er Umarbeitung (von 2002) ohne Probleme

    Dim rst As DAO.Recordset
    Set rst = CurrentDBC.OpenRecordset("SELECT * FROM tblStammdaten " & _
                                    "WHERE FKKLID=" & Me!cboClassEx & " AND del=0 Order By Familienname")
    Set Me!frmTNDetails.Form.Recordset = rst
    Set rst = Nothing


... kommt halt auch drauf an, zu welchem Zweck die Daten in ein Ufo geladen werden - zum Bearbeiten würde ich es eher nicht machen wollen ...
Zur Auswahl oder Ansicht sollte es keine Brösel machen :)
Titel: Re: Formular mit 2 Ufo
Beitrag von: DF6GL am Mai 31, 2010, 21:23:22
Hallo,

ja, danke, werde es mal bei Gelegenheit ausprobieren.


Titel: Re: Formular mit 2 Ufo
Beitrag von: rbaltermi am Mai 31, 2010, 21:30:09
Hallo database
Hallo DF6GL

danke für eure kostbare zeit.

ja ich habe probleme mit vba, da ich keinen blassen schimmer davon habe.

jedoch habe ich in meiner db darauf geachtet, dass keine zelle in allen tabellen gleich heisst und auch alle meine tabellen, abfragen... den entsprechenden präfix zugeordnet habe.
ich werde morgen dieses problem als gelöst melden, da ich eingesehen habe, dass es einen anderen weg geben muss und ich auch auf keinem fall zwei gute helfer gegeneinander aufhetzen wollte.

lg

ROlLI
Titel: Re: Formular mit 2 Ufo
Beitrag von: database am Mai 31, 2010, 21:37:13
Na jetzt aber runter vom Gas ...
wo siehst du da die Hetze? :)

Da gehts um einen sachlichen Informationsaustausch, der mit deinem Problem nur noch am Rande zu tun hat.

Zitatdass es einen anderen weg geben muss

Ja, das stimmt, es gibt natürlich auch eine andere Möglichkeit - die Access-eigenen Mittel - siehe dazu Suchbegriff Unterformulare, Musterdatenbanken hier im Download und Tipp&Tricks-Bereich oder auf dbwiki.de im Downloadbereich, die Online-Hilfe Begriff Unterformular und weitee einschlägige Literatur oder Internetseiten.

LG

Peter