TaoNW Geschrieben 28. April 2003 Teilen Geschrieben 28. April 2003 Wie kann ich den eine Spalte aus einem Listenfeld in einen Bericht übergeben. Habe es versucht in dem ich im Bericht an die Stelle an der der Eintrag auftauchen soll folgendes eingetippt habe : =[Formulare]![HF_Berichte]![bezeichnung]![1] und was auch noch wichtig wäre: in dem listenfeld sind mehrere datensätze drin, also soll der bericht immer alle datensätze beinhalten die im listenfeld stehen. gibt es da eine "non-select" anweisung. bisher muss ich nämlich immer einen datensatz anklicken, sonst läuft es im bericht auf einen "#Fehler" also ganz normal welches formular, welches feld und dann die "1" für die Spalte. war aber nicht des rätsels lösung thx 4 help Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Olli_Master Geschrieben 28. April 2003 Teilen Geschrieben 28. April 2003 AFAIK ist es nicht möglich eine Listenspalte direkt als Feld anzusprechen. Einzelne Werte kann man über die Eigenschaft Column abfragen: =[Formulare]![HF_Berichte]![Bezeichnung].[Column](1) Dies betrifft dann die Daten der aktuell ausgewählten Zeile und der 2. Spalte (0 = erste, 1 = zweite usw.) Ich hoffe das hilft weiter. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TaoNW Geschrieben 29. April 2003 Autor Teilen Geschrieben 29. April 2003 das hilft mir schonmal ein klein wenig weiter, jedoch geb ich jetzt ja nur einen einzigen selektierten datensatz an den bericht weiter. ich brauch aber alle datensätze die im listenfeld stehen, das heißt ohne selektion von einem datensatz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 29. April 2003 Teilen Geschrieben 29. April 2003 Original geschrieben von TaoNW ich brauch aber alle datensätze die im listenfeld stehen, das heißt ohne selektion von einem datensatz Woher kommen denn die Daten aus dem Listenfeld? Du könntest evt. die Einschränkungen (where-Bedingung) die du für das Listenfeld machst, falls die Daten aus einer Tabelle/Abfrage kommen, als Filter für den Bericht setzten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TaoNW Geschrieben 29. April 2003 Autor Teilen Geschrieben 29. April 2003 Die daten im Listenfeld kommen aus einer Suchabfrage. Ich frag mit meiner Suchfunktion ab nach der Bezeichnung und optional nach Hersteller, Gruppe und Untergruppe. Dann zeigt er mir alle gefundenen ergebnisse im Listenfeld an. Und das was im Listenfeld steht soll per Button in einem Bericht angezeigt werden Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 29. April 2003 Teilen Geschrieben 29. April 2003 Original geschrieben von TaoNW Die daten im Listenfeld kommen aus einer Suchabfrage. Ich frag mit meiner Suchfunktion ab nach der Bezeichnung und optional nach Hersteller, Gruppe und Untergruppe. Dann hast du ja eine Where-Bedingung, der die Daten einschränkt und brauchst nur genau diese Where-Bedingung als Filter beim Öffnen des Berichtes reinsetzten. Du kannst die Bedingung ja, da wo du die erstellst in eine Stringvariable packen (falls du die nicht sowieso schon in einer Variablen hast) und beim Öffnen des Berichts wieder verwenden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TaoNW Geschrieben 29. April 2003 Autor Teilen Geschrieben 29. April 2003 uff ok ich muss mich jetzt zwar einfach mal bedanken das dies anscheinend so funktioniert. aber ich muss dazu leider sagen : ich versteh nur bahnhof. das einzige was ich in einem bericht hinbekomme ist einem feld zu sagen das es seine daten von der tabelle bekommt. wie und wo bau ich den da jetzt eine bedingung ein. sorry bin leider nur ein anfänger azubi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 29. April 2003 Teilen Geschrieben 29. April 2003 Original geschrieben von TaoNW aber ich muss dazu leider sagen : ich versteh nur bahnhof. Ups, sorry. Im VBA rufst du ja einen Bericht so auf (z.B. im Klickereignis vom Button auf dem Formular): DoCmd.OpenReport "Berichtsname", acNormal, , "Where-Bedingung" Um Mal ein konkretes Beispiel zu nehmen: DoCmd.OpenReport "Rechnung", acNormal, , "Rechnungsnr = " & txtRechnungsnummer.Value Das öffnet einen Bericht mit genau einem Datensatz und zwar soll die Rechnungsnummer den Wert haben, der im Textfeld txtRechnungsnummer steht. Die Where-Bedingung in dem Aufruf ist genau das gleiche, wie die Where-Bedingung in einer SQL-Anweisung. Du schränkst ja die Daten, die in deinem Listenfeld erscheinen sollen durch die Where-Bedingung der Suchabfrage ein. Jetzt brauchst du eigentlich nur noch diese Where Bedingung nehmen und in den DoCmd.OpenReport als Where-Bedingung eintragen. Damit sollte dann der Bericht auf die gleichen Datensätze eingeschränkt sein, die auch in deinem Listenfeld sind. Die Where-Bedingung kannst du auch in eine Stringvariable speichern. Um bei dem Beispiel von oben zu bleiben: Dim Variable as String Variable="Rechnungsnr = " & txtRechnungsnummer.Value DoCmd.OpenReport "Rechnung", acNormal, , Variable Wenn also in dem Textfeld z.B. eine 5 drinstand, steht in Variable "Rechnungsnr=5" drin. Du kannst also die Where-Bedingung der Suchabfrage einfach in eine Variable speichern und in der DoCmd.OpenReport Anweisung wieder einsetzten. Ich hoffe das war etwas verständlicher Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TaoNW Geschrieben 29. April 2003 Autor Teilen Geschrieben 29. April 2003 DoCmd.OpenReport "A_Bestand_Abfrage", acViewPreview, , combine_search(Me.Suchen) so sieht jetzt das ganze aus. die funktion combine_search funktioniert ganz toll, diese benutz ich auch für das Listenfeld. jedoch bekomm ich jetzt immer die Fehlermeldung: Laufzeitfehler '94': Unzulässige verwendung von Null. genau an der stelle an der der obrige quelltext steht mängelt er mir die fehlermeldung an. ich hab auch mal ohne me.suchen probiert, aber dann heißt es das die funktion nicht optional wäre. kann ich die funktion hier nicht benutzen? diese ist ja nicht formular abhängig. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 29. April 2003 Teilen Geschrieben 29. April 2003 Original geschrieben von TaoNW kann ich die funktion hier nicht benutzen? diese ist ja nicht formular abhängig. Was macht die Funktion? Was genau ist Me.Suchen und was und von welchem Typ gibt die Funktion zurück? Poste bitte mal den genauen Wert, den die Funktion bei einem Durchlauf zurückgibt (Kannst du ja mal mit msgbox(combine_search(Me.Suchen)) ausgeben lassen). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TaoNW Geschrieben 29. April 2003 Autor Teilen Geschrieben 29. April 2003 Was macht die Funktion? Was genau ist Me.Suchen und was und von welchem Typ gibt die Funktion zurück? Poste bitte mal den genauen Wert, den die Funktion bei einem Durchlauf zurückgibt (Kannst du ja mal mit msgbox(combine_search(Me.Suchen)) ausgeben lassen). __________________ Also der Fehler is weg. aber der bericht ist leer. die funktion macht folgendes : sie sucht in der tabelle t_bestand alle datensätze die mit der sucheingabe (in dem fall hier das Feld Forms!HF_Berichte!Suchen ) die funktion combine_search gibt als rückgabewert einen string zurück wenn ich msgbox(combine_search(Me.Suchen)) ausprobiere gibt mir das einen ewig langen sql text aus und wie sag ich dem bericht jetzt das er die einzelnen felder aus dem string lesen soll ? sorry wenn ich zuviel frag Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 29. April 2003 Teilen Geschrieben 29. April 2003 Original geschrieben von TaoNW die funktion macht folgendes : sie sucht in der tabelle t_bestand alle datensätze die mit der sucheingabe (in dem fall hier das Feld Forms!HF_Berichte!Suchen ) die funktion combine_search gibt als rückgabewert einen string zurück Das heißt also, das die Funktion das Suchergebnis, also die einzelnen Werte zurückgibt? Für den docmd.openreport brauchst du aber eine WHERE-Bedingung, wie sie auch in der SQL-Anweisung verwendet wird, also in der Art: "Feld1=Wert1 AND Feld2=Wert2", die Werte alleine reichen nicht. Evt. kannst du in der Funktion nachschauen, wie das da eingeschränkt wird und das in deinen DoCmd.OpenReport übernehmen. EDIT: Ups, hattest ja auch noch editiert Je nachdem wie die SQL-Anweisung aussieht könntest du den String nach dem Text "WHERE" druchsuchen und alles bis dahin abschneiden damit hättest du deine WHERE-Bedingung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TaoNW Geschrieben 29. April 2003 Autor Teilen Geschrieben 29. April 2003 ich glaub ich muss noch bissl weiter im netz und in den büchern durchschnuppern, weil jetzt fängts bei mir an richtig neblig zu werden. wie ich da jetzt was mit where bedingung abschneiden soll und umgestalten blick ich jetzt gar nicht mehr. aber immerhin weiß ich jetzt schonmal wies gehen soll. danke sehr. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 29. April 2003 Teilen Geschrieben 29. April 2003 Original geschrieben von TaoNW wie ich da jetzt was mit where bedingung abschneiden soll und umgestalten blick ich jetzt gar nicht mehr. Schau dir dazu mal die Funktionen Mid(string, start[, length]) und len(string) an (ist in der Accesshilfe ganz gut beschrieben). Mit mid kannst du bestimmte Stücke von einem String auslesen und mit len die Länge eines Strings bestimmen. z.B. Variable=mid(Text, 5, 8) Würde aus der Variable Text 8 Zeichen ab dem 5. Zeichen in Variable reinschreiben. Damit wäre das machbar. In einer Schleife nach dem Teilstring "WHERE" suchen und den Teil den du brauchst in eine Variable speichern. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TaoNW Geschrieben 29. April 2003 Autor Teilen Geschrieben 29. April 2003 ok ab jetzt muss ich das mal alleine durchackern, sonst lern ich das nie. vielen dank für deine ausführliche hilfe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.