Hallo zusammen,
ich versuche aus einem Formular mit UFO einen Bericht drucken zu lassen.
Kurze Erklärung:
in meinem Kaufvertragsformular wird über ein Kombi der Artikel ausgewählt. z.B. Matratze XY oder Daunenbett XY
Wenn nun "Daunenbett XY" verkauft wird, möchte ich den Bericht "GutscheinBettenreinigung" drucken lassen.
Mein Versuch:
if me.Artikeldaten_Unterformular1!Kombinationsfeld18 like "*" & Daunenbett & "*" then
docmd.openreport "GutscheinBettenreinigung"
else
End if
der Code steht im Ereignis "beim verlassen" des UFO.
Leider Druckt er nicht den Bericht aus.
Ist mein Code falsch oder habe ich das falsche Ereignis gewählt?
Danke schonmal für Eure Hilfe
Gruß
Marc
Zitat von: maute0311 am September 29, 2010, 12:56:00
if me.Artikeldaten_Unterformular1!Kombinationsfeld18 like "*" & Daunenbett & "*" then
Hi Marc
was passiert, wenn Du
"
'*" & Daunenbett & "*
'"
verwendest (Hochkomma zum Einrahmen)?
2. Ich hätte einen Druckbutton genommen, um den Druck zustarten.
Harald
Hallo Harald,
ich habe es gemäß deinem Vorschlag geändert, es tut sich trotzdem nicht das gewünschte.
Auch habe ich den Code an einen Button gehängt, auch nichts.
Hast Du vielleicht noch einen anderen Vorschlag???
Gruß
Marc
Hi Marc
hast Du schon per debugger bzw. mit einer zusätzlichen Zeile
msgbox "xyz" ' {innerhalb der if - Anweisung, vor dem docmd.open...}
getestet, ob überhaupt dieser Befehl angesteuert wird?
Harald
Hallo Harald,
die MSGBOX wird ignoriert.....
Gruß
Marc
Hallo,
da gibt es erst noch einigen Klärungsbedarf.
Ist das Kombi im Ufo?
Wenn im Ufo mehrere Datensätze sind, wird nur der aktuelle Datensatz geprüft.
Steht dann Daunenbett immer vorn?
Ist die gebundene Spalte des Kombis die mit dem Namen?
Verwendest Du einen primärschlüssel für den Artikel?
Ich würde im Formularkopf des Ufos einen Button zum Drucken machen.
Im Ereignis "beim verlassen" des UFO ist das ungünstig, Du würdest ja einen Gutschein drucken, auch wenn Du das Formular nur ansiehst.
Mir scheint auch das datenmodell eher ungünstig. Du bräuchtest eine Tabelle mit den Oberbegriffen (1=Daunenbett, 2=Matratze) usw.
Dann kannst Du nähmlch auf die Zahl abfragen und sparst Dir das Like gedöns.
Hallo,
-Das Kombi befindet sich im UFO
-Das UFO kann mehrere Datensätze enthalten, die nicht alle Daunenbett sind.
-Daunenbett steht nicht immer vorne
-die gebundene Spalte ist der Name
Im Formularfuß ist bereits ein Button zum Drucken des Kaufvertrages, dort habe ich versucht den Code unterzubringen, ebenfalls ohne Erfolg.
Gruß
Marc
N'abend,
wenn ich das recht verstanden habe, willst Du prüfen, ob ein langer Begriff ("Daunenbett xy") einen kurzen Begriff enhält.
Vielleicht hilft Dir:
if InStr(me.Artikeldaten_Unterformular1!Kombinationsfeld18,"Daunenbett") > 0 then .... ' "Deinen Bericht drucken"
Harald
Hallo,
wenn der Button zum Drucken im Formularfuß des Ufos ist, sollte das funktionieren:
If Me!Kombinationsfeld18 Like "Daunenbett*" Then
DoCmd.OpenReport "GutscheinBettenreinigung"
End if
PS:
Du solltest Code grundätzlich kopieren, niemals abschreiben, damit die Helfer sicher sind, dass kein Tipfehler drin ist.
Dass abgeschrieben und nicht kopiert wurde erkennt man an den kleinen Buchstaben der Schlüsselworte.
Hallo,
Wenn das Kombifeld als gebundene Spalte den Texteintrag besitzt sollte das Auslesen bzw. ein Zeichenfolgevergleich schon funktionieren.
Habe mit dem Vorschlag von MzKlMu das eben mal durchgespielt - passt!
Du kannst auch versuchen den Textinhalt des Kombis direkt abzufragen ...
If Me!Kobinationsfeld18.Text = "Daunenbett*" Then ...
Allerdings MUSST du dabei ZUVOR den Focus auf das Kombi legen ---> Me!Kobinationsfeld18.SetFocus
Grüße
Peter
Hallo,
danke erstmal für Eure Mühe.
Ich glaube ich habe eine Information unterschlagen:
Das UFO ist als Datenblatt-Ansicht dargestellt. ( Hat das Auswirkungen auf die Funktion??? Leider funktionieren Eure Vorschläge nicht )
Der Button befindet sich nicht im UFO sonder im HFO.
Gruß
Marc
Hallo,
ZitatLeider funktionieren Eure Vorschläge nicht
Naja, wie denn auch - wir reden hier ja von völlig verschiedenen Voraussetzungen.
Wenn sich der Button auf dem Hauptformular befindet musst du das Steuerelement (Unterformular) des Hauptformulars und das im Unterformular enthaltene Steuerelement (Kombifeld ) richtig ansprechen.
Sieh zu dem Thema mal da rein und besonders den weiterführenden Link zu Dev Ashish!
www.donkarl.com?FAQ4.2 (http://www.donkarl.com?FAQ4.2)
Hallo,
Der Name des UFO-Steuerelementes ist "Artikeldaten_Unterformular1".
In meiner zuerst geposteten Frage habe ich den Bezug doch richtig geschrieben.
Zitatif me.Artikeldaten_Unterformular1!Kombinationsfeld18 like "*" & Daunenbett & "*" then
Der Name des Kombifeldes ist "Kombinationsfeld18" - der Steuerelementinhalt des Kombis ist "Artikel"
Gruß
Marc
Hallo,
hast du bei Dev Ashish nachgelesen?
To refer to a control
On Mainform Me!ControlName
On Sub 1 Me!Subform1.Form!ControlName
Für dich würde das sinngmäß lauten:
IF Me!Artikeldaten_Unterformular1.Form!Kombinationsfeld18 LIKE "Daunenbett*" Then
Versuch mal...
Hallo,
ich bezweifle erst mal, bis zur Behauptung des Gegenteils, dass sich der Vergleichswert nicht in Spalte 0 der Kombiliste befindet.... 8)
Dort wird eher die ID des entspr. Datensatzes zu finden sein.
Wenn diese Referenzierung auf eine Kombifeldfeldspalte in einem UFO überhaupt zielführend ist, dann wird es vermutlich so heißen müssen, wenn der Wert in der zweiten Spalte (gezählt:1) steht:
if me!Artikeldaten_Unterformular1!Kombinationsfeld18.Column(1) like "*Daunenbett*" then
OK, jetzt wird´s für mich nur noch komplizierter.
ich habe mir eine msgbox zwecks kontrolle des Bezuges eingebaut und ich denke (hoffe) der Bezug stimmt nun.
Kann mein Problem ( neben meiner Unwissenheit natürlich ) auch im Ufo selbst liegen? Will sagen: Das Ufo ist ein Endlosformular - kann es daran liegen, das Access nur den letzten DS prüft, ob "Daunenbett*" drinsteht??
Gruß
Marc
Hallo,
sagte doch, dass eine solche Referenz auf ein UFO nicht zielführend ist.
Es tönt nach nicht normalisertem (und evtl. sogar unlogischem ) Tabellenaufbau ...
Die Referenz zeigt auf den aktuellen Datensatz (ob das nun der erste, letzte oder einer von mittendrin ist, kann man nicht mit Bestimmtheit sagen, weil das von der Bedienung (und Programmierung) der ganzen Geschichte abhängt.
Wie lautet der Code der Msgbox-Zeile und was wird dabei ausgegeben?
@DF6GL
" Dort wird eher die ID des entspr. Datensatzes zu finden sein "
Da hatte Klaus schon in #5 nachgehakt, da gibts lt Auskunft in #6 keine ID.
ZitatDas UFO ist als Datenblatt-Ansicht dargestellt.
??? ???
Aber egal, wenn das ein Endlosformular ist und mehrere Datensätze angezeigt werden, bei denen dann auch noch in den Kombis in jeder Zeile unterschiedliche Werte stehen - raufen sich die Haare um einen Stehplatz!
Dann musst du zusätzlich angeben welche Zeile du meinst (sofern du im Unterformular die ID der Datenherkunft mitführst)
Wäre es da nicht einfacher eine andere leichter zu durchschauende, praktikablere Lösung anzustreben?
Hallo,
habe es so probiert:
ZitatPrivate Sub Druckbefehl_Click()
On Error GoTo Err_Druckbefehl_Click
If Me.Artikeldaten_Unterformular1!Kombinationsfeld18.Column(1) Like "*Daunenbett*" Then
DoCmd.OpenReport "GutscheinBettenreinigung"
Else
varbox = MsgBox("MIST", vbCritical, "ohne Hilfe schaffst Du es nie !!!")
End If
Wenn ich nun versuche in das UFO "Daunenbett xy" einzugeben kommt die MSGBOX beim Druckbefehl.
@ database: leichtere Lösung??? - GERNE!!! ist sie auch für einen Laien wie mich umsetzbar???
Gruß
Marc
Hallo,
@database:
ok. habe es mir jetzt nicht angetan, den gesamten Thread von Anfang an durchzulesen... ;D
@maute0311:
ich befürchte immer mehr, Du willst das Pferd von hinten aufzäumen.
Erzähl mal, was genau passieren soll, damit wir mal zum Ende kommen...
Bis jetzt versteh ich nur soviel, als dass Du bei der Eingabe von "Daunenbett" (warum denn "Eingabe" und nicht "Auswahl") im Kombifeld im Unterform den Gutschein drucken willst.
Wie heißen die Eigenschaftseinstellungen (Datensatzherkunft, Spaltenanzahl, Gebundene Spalte, Spaltenbreiten) des Kombifeldes?
Prinzipiell sollten man Vorgänge, die sich auf Daten im Unterform beziehen, auch in diesem Unterform ausleben und gescheite Benamsung verwenden .
Im Unterform:
Kombi "BettenartID"
Datensatzherkunft: Select BettenartID, Bettenartbezeichnung from tblBettenarten order by Bettenartbezeichnung
Spaltenabzahl:2
Spaltenbreiten: 0cm;5cm
Steuerelementinhalt: BettenartID (Feld in der dem UF zugrundeliegenden Tabelle)
Sub btnGutscheindrucken_Afterupdate()
If Me!BettenartID = 2 Then ' 2 ist der PK-Wert aus der Tabelle, in der die Bettenarten stehen für den Datensatz, der "Daunenbett" bedeutet
DoCmd.OpenReport "GutscheinBettenreinigung"
End If
End Sub
Hallo,
verzeiht meine missverständliche Ausdrucksweise... Auswahl im Kombi ist schon recht.
Es handelt sich um einen Kaufvertragsformular (HFO mit Kundendaten) und UFO, in welchem die gekauften Artikel über dieses Kombi ausgewählt werden.
Wenn nun ein Verkäufer ein "Daunenbett xy" verkauft soll der Bericht gedruckt werden.
Zu den Eigenschaften des Kombis:
Datensatzherkunft: Tabelle "Artikel"
Spaltenanzahl: 1
Gebundene Spalte: 1
Spaltenbreite: 5cm
Gruß
Marc
Hallo,
Ist dann das Tabellenfeld, in dem "Daunenbett xy" drinsteht, das Primärschlüsselfeld in der Artikeltabelle??
Ich kann Dir nur dringend empfehlen, die Tabelle(n) gemäß u. st. Links #1 und #2 aufzubauen.
Wenn "verkaufen" bedeutet, dass der User im Kombifeld ("Artikel") einen Artikel auswählt und in der Tabelle speichert, der mit "Daunenbett" am Anfang beginnt , dann wäre der folgende Code (mit Deinem Tabellenaufbau) einsetzbar.
Im Unterform:
Sub Form_Afterupdate()
If Me!Artikel Like "Daunenbett*" Then
DoCmd.OpenReport "GutscheinBettenreinigung"
End If
End Sub
Guten Morgen,
mit Deinem Code funktioniert es nun.
Danke für Deine Geduld und Mühe.
Schön das man auf Profis zurückgreifen kann, gut das es Access-o-Mania gibt.
Danke und Gruß
Marc