![]() |
Bericht: Listfeld zuweisen
hi, ich möchte das listfeld definieren, leider meint er immer, dass ich das nicht setzen kann
weiss wer wie ich das machen kann ? Private Sub Report_Activate() Set con = CurrentProject.Connection Set rstds = New ADODB.Recordset Set rstVerleih = New ADODB.Recordset Set rstAdresse = New ADODB.Recordset Set rstTableOpen = New ADODB.Recordset Dim str_suchkriterium As String int_g_mitarbeiterid = 1 ds = "select Filiale_ID from tbl_mitarbeiter where ID = " & int_g_mitarbeiterid & ";" 'Listet FilialID des Mitarbeiters auf rstds.Open ds, con, adOpenDynamic, adLockOptimistic rstAdresse.Open "tbl_filiale", con, adOpenDynamic, adLockOptimistic If (rstAdresse!ID <> rstds!filiale_id) Then str_suchkriterium = "[ID] = " + "'" + rstds!filiale_id + "'" rstAdresse.Find str_suchkriterium, adSearchForward End If rstds.Close txt_filiale = rstAdresse!Adresse rstAdresse.Close txt_datum = Date rstVerleih.Open "tbl_verleih", con, adOpenDynamic, adLockOptimistic rstVerleih.MoveLast txt_rnummer = rstVerleih!ID txt_betrag = rstVerleih!Gesamtbetrag 'ds = "SELECT tbl_cdarchiv.ID, tbl_cdarchiv.CDName FROM tbl_verleihzeile, tbl_cdarchiv WHERE " _ & " (((tbl_verleihzeile.Lagerbestandcd_ID)=[tbl_cdarchiv].[id]) AND ((tbl_verleihzeile.Verleih_ID)=rstVerleih!id));" lst_artikel.RowSource = "SELECT tbl_cdarchiv.ID, tbl_cdarchiv.CDName FROM tbl_verleihzeile, tbl_cdarchiv WHERE " _ & " (((tbl_verleihzeile.Lagerbestandcd_ID)=[tbl_cdarchiv].[id]) AND ((tbl_verleihzeile.Verleih_ID)=rstVerleih!id));" End Sub |
dein posting ist für mich nicht sehr aufschlussreich
wenn ich's richtig kapiere willst du zur laufzeit ein DBList füllen. die rowsource-eigenschaft kann aber zur laufzeit nicht geändert werden. ist bei diesem steuerelement nicht vorgesehen. du kannst aber ein recordset erstellen, und dann ein listenfeld mit den daten füllen. wenn es viele zeilen sind, kann das aber dauern. dann würde ich ein grid verwenden. falls ich es falsch verstanden habe, bitte eine möglichst genaue beschreibung vom gewünschten effekt. bitte mit folgenden angaben: welche VB-Version welche controls stehen dir zur verfügung in welchem container soll das control sein was soll mit den angezeigten daten weiter geschehen WB |
hi
access xp ich hab ne abfrage gemacht "ds" die soll nun im listfeld des berichtes stehen i weiss ned was controls, container etc sind nur dass ich die abfrage ds hab, dass im listfeld des berichtes angezeigt werden soll und das ich ADO verwende |
hi!
sorry, auf access war ich nicht vorbereitet mit access habe ich bei office 97 aufgehört, weil alle 2 jahre eine neue version kommt, die mit der vorigen nicht kompatibel ist. vergiss was ich geschrieben habe in dunkler erinnerung habe ich aber noch, daß man bei access die rowsource-eigenschaft mit vb einstellen kann. auch eine sql-anweisung ist zulässig. soweit sollte alles in ordnung sein. vorher muß die rowsourcetype-eigenschaft eingestellt sein. in deinem fall ist wahrscheinlich "table/query" die richtige einstellung. vielleicht funktioniert es auch bei xp noch so. ein versuch kann nicht schaden. WB |
ja bei formularen funkts ja auch
nur bei berichten ned.. aba irgendwie muss ja gehen sonst wärs ja unsinnig listfelder in berichte einfügen zu können |
eingeschränkte funktionen der steuerelemente sind mir nicht neu.
in vb6 gibt's das auch in ähnlicher weise. aber warum brauchst du in einem bericht ein listenfeld? wenn der bericht gedruckt wird, was eigentlich der sinn ist, kann man ja nichts mehr auswählen oder beeinflussen. wenn du nur eine ausgabe am bildschirm willst, muss es kein bericht sein. in deiner sql-anweisung sehe ich nur eine variable. wenn du die datensätze für den bericht filtern willst, sollte das schon früher geschehen. also wenn es kein geheimnis ist, dann sag mir, was du wirklich erreichen willst. ich bin ziemlich sicher, daß man das gewünschte ergebnis erreichen kann. mit access ist ja fast alles machbar. aber um den weg zu finden, sollte man das ziel kennen. WB |
also .. es isn schulprojekt
der kunde wählt aus welche filme oder musikcds er ausborgen will und bekommt ne rechnung (bericht) hier soll dann eben filiale etc drinstehen und dann alle ausgeliehenen artikel und in das listfeld wollte ich die artikel schreiben |
na prima, dann brauchts kein listenfeld im bericht.
sowas habe ich vor jahren für einen freund gemacht, nur das es keine cd's waren. damals habe ich noch mit access gearbeitet. ich versuche einmal aus deinem code auf die grundlage zu kommen. geht ungefähr so: tbl_filiale tbl_mitarbeiter tbl_verleih - enthält den geschäftsfall tbl_cdarchiv - entält den lagerbestand tbl_verleihzeile - ein datensatz pro verliehener cd frm_verleih ein formular mit unterformular - combo zum auswählen des mitarbeiters die filiale wird wird festgelegt, und di id in tbl_verleih gespeichert. anzeige im form nicht notwendig, aber möglich - felder für datum, kunde, ... was auch immer gespeichert wird falls zb. eine kundenkartei (tbl_kunden) existiert, combo verwenden. - verleihid anzeige im form nicht notwendig, aber speichern frm_verleihunterf |
sorry, ich hab einen absturz gebaut. ich schreib das ganze nochmal
na prima, dann brauchts kein listenfeld im bericht. sowas habe ich vor jahren für einen freund gemacht, nur das es keine cd's waren. damals habe ich noch mit access gearbeitet. ich versuche einmal aus deinem code auf die grundlage zu kommen. geht ungefähr so: tbl_filiale tbl_mitarbeiter tbl_verleih - enthält den geschäftsfall tbl_cdarchiv - entält den lagerbestand tbl_verleihzeile - ein datensatz pro verliehener cd frm_verleih ein formular mit unterformular - combo zum auswählen des mitarbeiters die filiale wird wird festgelegt, und di id in tbl_verleih gespeichert. anzeige im form nicht notwendig, aber möglich - felder für datum, kunde, preis, ... was auch immer gespeichert wird falls zb. eine kundenkartei (tbl_kunden) existiert, combo verwenden. - verleihid anzeige im form nicht notwendig, aber speichern - ok schaltfläche frm_verleihunterf - darsrellung tabellenansicht - mit nachschlageassistent cd auswählen. die ganze zeile wird angezeigt (titel, preis, ..), aber nur die id gespeichert. ich glaube damals habe ich eine hilfstabelle verwenden müssen. vielleicht find ich es noch. die cd wird als verliehen markiert, damit sie nicht ein 2. mal ausgegeben werden kann. auch in der auswahlliste darf sie nicht mehr erscheinen. geamtpreis aktualisieren. auf ok klicken - der bericht wird gedruckt. als einziges argument muß die verleihid übergeben werden, alles andere kann er aus den tabellen holen. ich glaube das ist so ziemlich die minimalversion. praktischer wird's, wenn man im formular nicht nur neue vorgänge anlegen kann, sondern auch die früheren anzeigen kann. eine suchfunktion ist auch noch ein goodie. kommt auf deine lehrer an. die cd-verwaltung auch nicht vergessen! ich schau jetzt noch ob ich das alte projekt noch finde. falls ja, melde ich mich nochmal. WB |
ich hab die beschreibung von dem damaligen project gefunden
im prinzip habe ich alles so gemacht wie vorher gepostet, nur halt aufwendiger und mit zusätlichen funktionen z.b. für eingehende lieferungen, usw. tbl_artikel - alle angaben bis hin zu mwst-satz, handelsspanne,.... tbl_bestelldetails - verbindet artikelid und bestellid. zusätzlich verwende ich noch eine lfd.nr., um die zeilen in der bestellung zu mummerieren, und die anzahl der artikel. anzahl wirst du aber nicht brauchen. tbl_bestellungen - angaben über kunden, datum, versandadresse, frachtkosten,.... und wie gesagt, für den Bericht genügt die bestellid als parameter. viel spaß WB |
ich kann nicht mehr neue tabellen etc machen, das steht schon alles .. -> ERD
ich muss es mit denen machen die da sind, einige formulare sind ja schon fertig |
ist die verwendung der tabellen eine vorgabe?
in deinem code kommen 5 tabellen vor: tbl_filiale tbl_mitarbeiter tbl_verleih tbl_cdarchiv tbl_verleihzeile das genügt. entscheidend ist nur, den verleih-vorgang (das eintragen der cd's, die bei einem vorgang verliehen werden) in einem formular durchzuführen, und die notwendigen daten in die tabellen zu schreiben. combos zur auswahl sind zwar komfortabel und stellen sicher, daß nur vorhandene einträge augewählt werden können, aber nicht unbedingt notwendig. wenn du die zu verleihende cd händisch einträgst, mußt du darauf achten, daß sie sie auch wirklich existiert. oder zumindest ein datensatz mit dieser id in tbl_cdarchiv existiert. in tbl_verleihzeile muß für jede verliehene cd ein datensatz entstehen, der die id aus tbl_verleih und die id aus tbl_cd archiv enthält. in tbl_verleih muß die id des mitarbeiters gespeichert werden. ich gehe der einfachheit halber davon aus, daß der bericht nur aus 1 seite bestehen wird. andernfalls wird es kompliziert. notfalls kann ich dir aber auch diese möglichkeit beschreiben. der bericht muß aus 3 bereichen bestehen. eventuell sind die von mir verwendeten bezeichnungen nicht ganz korrekt, aber sie sollten erkennbar sein. - berichtskopf oder seitenkopf (bei dieser lösung wahrscheinlich gleichwertig) enthält bei bedarf den briefkopf und das firmenlogo textfelder für die daten aus tbl_verleih, tbl_mitarbeiter, tbl_verleih. (z. b. datum, filiale, mitarbeiter, ...) - detailbereich textfelder für die daten aus tbl_cdarchiv - berichtsfuß oder seitenfuß textfeld für die rechnungssumme berichtsfuß ist besser. dann kommt die summe nach dem detailbereich bei seitenfuß steht die summe ganz unten, auch wenn nur wenige zeilen vorhanden sind. eventuelle firmendaten (firmenbuchnr, kontonr, ...) kommen in den seitenfuß. wie geagt muß dem bericht die id aus tbl_verleih übergeben werden. das geht am einfachsten, wenn du den bericht gleich aus dem formular öffnest. wenn du den bericht bei geschlossenem formular öffnest, wirst du zur eingabe der id aufgefordert. damit kann eine sql-anweisung erstellt werden, die alle daten enthält. mit access geht das sehr leicht. im berichtsentwurf kann die abfrage mit dem assistenten erstellt werden. in dieser abfrage wird als parameter formular!verleihid verwendet. ich glaube noch kleiner oder einfacher ist das gewünschte ergebnis nicht zu erreichen. WB |
gut
ich mach die verleihID als globale variable oben steht eh mei abfrage die schreib i in ne abfrage statt in den code und dem listfeld weise ich die abfrage zu nur wie schreib i die globale variable in die sql-abfrage damit er sie annimmt ? |
ich glaube wir reden aneinander vorbei.
es gibt kein listenfeld im bericht. und auch im formular macht es wenig sinn. ein unterformular ist viel besser. im detailbereich des berichts ist ein textfeld für jedes feld das angezeigt werden soll. das ergibt 1 zeile. bei öffnen des berichts wird diese zeile entsprechend der Anzahl der daensätze wiederholt und mit daten gefüllt. die abfrage wird im entwurf des berichts definiert. im feld verleihid gibst du als parameter dein formular!verleihid an. für die minimalversion mußt du keinen code schreiben im formular brauchst du eine schaltfläche zum öffnen des berichts. die kannst du auch mit dem assistenten erstellen. oder ist deine aufgabe die lösung in vba zu programmieren statt die möglichkeiten von access zu verwenden? WB |
^hi
das formular gibts ja schon öffnet den bericht aber wie mach ich das? die abfrage wird im entwurf des berichts definiert. im feld verleihid gibst du als parameter dein formular!verleihid an. ich versteh leider nicht wie du das meinst |
1. bericht in der entwurfsansicht öffnen
2. sicherstellen daß bericht ausgewählt ist 3. eigenschaftsfenster öffnen und register daten auswählen 4. datenherkunft löschen und cursor in die zeile datenherkunft setzen 5. auf die schaltfläche mit ... klicken --> der assistent erscheint 6. alle benötigten tabellen hinzufügen 7. falls keine beziehungen definiert sind, mußt du es jetzt machen 8. die gewünschten felder in die abfrage ziehen 9. im feld verleihid folgende bedingung eintragen: Wie [forms]![formularname]![feldname], formularname und feldname anpassen 10. ab und zu den assistenten schließen um die sql-anweisung zu speichern 11. auf die schaltfläche ansicht (links oben) klicken --> das ergebnis der abfrage wird angezeigt. wenn das formular nicht geöffnet ist, wirst zur eingabe der bestellid aufgefordert. 12. wenn du die abfrage erstellt hast, den assistenten beenden 13. feldliste öffnen und die gewünschten felder im entwurf platzieren 14. bei einer tabellenartigen darstellung der verleihzeilen die bezeichnungsfelder im kopf platzieren alternativ kannst du die abfrage auch als abfrage erstellen, und im bericht die datenherkunft auf diese abfrage einstellen du hast wohl noch nicht sehr viel mit access gemacht. falls du probleme hast ruf mich heute unter 0590591/62320 an. dann machen wir es gemeinsam. WB |
laß mal hören ob es schon funktioniert.
wenn nicht, bin ich freitag ab 18:00 wieder tel. erreichbar WB |
ja funkt danke
hab zwar ned die globale variable übergeben können aber ein textfeld hab im formular ein unsichtbares textfeld wo ich die variable reinschreib und dann mach im bericht [forms]![formularname]![feldname] |
super!
übrigens war das auch so gedacht, das die verleihid in einem textfeld steht, das aus der tabelle gefüllt wird. WB |
aso :D
hab mir gedacht ich hab nur gepfuscht *fg* irgendwie blöd dass das mit ner globalen variable ned geht.. |
wenn es unbedingt sein muß, kann man schon eine variable verwenden, die dem bericht übergeben wird.
macht aber mehr arbeit, und ich sehe keinen vorteil. nach meiner version steht die id im formular. das textfeld wird automatisch aktualisiert. damit hast du immer automatisch immer die richtige id zur hand. der bericht liest sie automatisch. du brauchst keinen code zu schreiben. wenn der bericht bei geschlossenem formular geöffnet wird, was aber dem normalen user nicht möglich gemacht werden sollte, wird nach der id gefragt. wenn du eine variable verwenden möchtest, mußt du das alles programmieren. hast du einen guten grund dafür? welchen vorteil versprichst du dir davon? WB |
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag