Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: maute0311 am September 29, 2010, 12:56:00

Titel: Probleme mit "Like"
Beitrag von: maute0311 am September 29, 2010, 12:56:00
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
Titel: Re: Probleme mit "Like"
Beitrag von: bahasu am September 29, 2010, 14:17:23
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
Titel: Re: Probleme mit "Like"
Beitrag von: maute0311 am September 29, 2010, 14:58:45
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
Titel: Re: Probleme mit "Like"
Beitrag von: bahasu am September 29, 2010, 15:02:25
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
Titel: Re: Probleme mit "Like"
Beitrag von: maute0311 am September 29, 2010, 15:09:36
Hallo Harald,

die MSGBOX wird ignoriert.....

Gruß

Marc
Titel: Re: Probleme mit "Like"
Beitrag von: MzKlMu am September 29, 2010, 16:06:24
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.


Titel: Re: Probleme mit "Like"
Beitrag von: maute0311 am September 29, 2010, 17:02:12
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
Titel: Re: Probleme mit "Like"
Beitrag von: bahasu am September 29, 2010, 18:27:11
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
Titel: Re: Probleme mit "Like"
Beitrag von: MzKlMu am September 29, 2010, 19:06:36
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.
Titel: Re: Probleme mit "Like"
Beitrag von: database am September 29, 2010, 20:21:01
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
Titel: Re: Probleme mit "Like"
Beitrag von: maute0311 am Oktober 05, 2010, 14:36:22
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
Titel: Re: Probleme mit "Like"
Beitrag von: database am Oktober 05, 2010, 15:44:59
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)
Titel: Re: Probleme mit "Like"
Beitrag von: maute0311 am Oktober 05, 2010, 16:12:44
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
Titel: Re: Probleme mit "Like"
Beitrag von: database am Oktober 05, 2010, 16:27:03
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...
Titel: Re: Probleme mit "Like"
Beitrag von: DF6GL am Oktober 05, 2010, 16:42:35
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
Titel: Re: Probleme mit "Like"
Beitrag von: maute0311 am Oktober 05, 2010, 16:48:28
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
Titel: Re: Probleme mit "Like"
Beitrag von: DF6GL am Oktober 05, 2010, 16:54:33
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?




Titel: Re: Probleme mit "Like"
Beitrag von: database am Oktober 05, 2010, 16:56:14
@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?
Titel: Re: Probleme mit "Like"
Beitrag von: maute0311 am Oktober 05, 2010, 17:13:41
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
Titel: Re: Probleme mit "Like"
Beitrag von: DF6GL am Oktober 05, 2010, 17:41:09
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
Titel: Re: Probleme mit "Like"
Beitrag von: maute0311 am Oktober 05, 2010, 17:59:26
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
Titel: Re: Probleme mit "Like"
Beitrag von: DF6GL am Oktober 05, 2010, 18:28:13
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

Titel: Re: Probleme mit "Like"
Beitrag von: maute0311 am Oktober 06, 2010, 08:32:07
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