Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Access, VBA, nächsten Wert in Listfeld auswählen und auslesen

Frage Entwicklung VB for Applications

Mitglied: jknapp

jknapp (Level 1) - Jetzt verbinden

04.04.2008, aktualisiert 09.04.2008, 14800 Aufrufe, 7 Kommentare

Automatisches durchlaufen eines Listfeldes und aufrufen des entsprechenden Berichts in Access

Hallo,

ich habe folgendes Problem:

Je nach dem in einem Listfeld ausgewählten Formular soll ein entsprechender (per Abrfage gefilterter) Bericht (Dienstanweisung) aufgerufen, gedruckt und wieder geschlossen werden.
Das funktioniert auch soweit, nur wenn alle Dienstanweisungen nacheinander gedruckt werden sollen, funktioniert das nicht.

Der Markierungsbalken wandert zwar durch das Listfeld bis zum Ende, aber es wird pro Schleife immer der gleiche Bericht gedruckt.

hier der Code:



Private Sub Button_Printall_Click()

Do Until Kombinationsfeld2.ListIndex = (Kombinationsfeld2.ListCount - 1)

'DoCmd.OpenReport "Fahrerdienstplan3", acViewNormal, "50 Filter Dienstauswahl"
DoCmd.OpenReport "Fahrerdienstplan3", acViewPreview, "50 Filter Dienstauswahl"

If Reports!Fahrerdienstplan3.Pages = 3 Then
DoCmd.PrintOut
DoCmd.OpenReport "leerseite", acViewNormal, "50 Filter Dienstauswahl"
ElseIf Reports!Fahrerdienstplan3.Pages = 1 Then
DoCmd.PrintOut
DoCmd.OpenReport "leerseite", acViewNormal, "50 Filter Dienstauswahl"
ElseIf Reports!Fahrerdienstplan3.Pages = 5 Then
DoCmd.PrintOut
DoCmd.OpenReport "leerseite", acViewNormal, "50 Filter Dienstauswahl"
Else
DoCmd.PrintOut
End If

DoCmd.Close acReport, "Fahrerdienstplan3", acSavePrompt
Kombinationsfeld2.Selected(Kombinationsfeld2.ListIndex + 1) = True
Loop


End Sub


Kann mir jemand sagen warum er nicht den jeweiligen Bericht druckt ? Kann man den Listfeldwert nochmal aktualiesieren oder sowas ?

Vielen Dank !
Mitglied: jato11
04.04.2008 um 16:27 Uhr
Wenn Du alle drucken möchtest, brauchst Du sie doch nicht filtern
Mach doch zwei Makros davon eins mit Filter und das Andere ohne.

Viele Grüße
Torsten
Bitte warten ..
Mitglied: RDiller
04.04.2008 um 16:37 Uhr
Hallo,

das Problem liegt darin, dass Deine Abfrage den geänderten Wert im Formular nicht erkennen kann - weiß auch nicht so genau wieso.

Aber so könntes Du es hinkriegen.
Der Trick dabei ist, dass du die Abfrage für jeden Wert neu erstellst bevor der Report aufgerufen wird:

Dim sqls As String 'Hier kommt deas SQL Statement rein

Abfragename = "Abfrage2" ' Der Name Deine Abfrage
Anz_zeilen = Kombinationsfeld2.ListCount - 1 'Die Anzahl der Einträge ermitteln. Liestcount startet mit 1, das Kombinationsfeld zum ansprechen mit 0

For Zeilen = 0 To Anz_zeilen
'Im Kombinationsfeld den entsprechenden Eintrag selektieren .Column(Spalte,Zeile)

Me.Kombinationsfeld2 = Me.Kombinationsfeld2.Column(0, Zeilen) 'Das kannst Du Dir eigenlich sparen

'Das SQL-Statement erstellen. Hier muß natürlich Dein Statement stehen (Am besten über den Abfragegenerator in der SQL-Ansicht kopieren

sqls = " SELECT groups.name, groups.description " _
& "FROM Groups " _
& " WHERE groups.name='" & Me.Kombinationsfeld2.Column(0, Zeilen) & "'"

'Die Alte Abfrage löschen

On Error Resume Next 'Damit es weitergeht, falls die Abfrage nicht existiert
DoCmd.DeleteObject acQuery, Abfragename
On Error GoTo 0 'Bei Fehlern stoppen

'Die neue Abfrage erstellen

Set Abfrage = CurrentDb.CreateQueryDef(Abfragename, sqls)

'Und jetzt weiter
DoCmd.OpenReport "Fahrerdienstplan3", acViewPreview, "50 Filter Dienstauswahl"

If Reports!Fahrerdienstplan3.Pages = 3 Then
DoCmd.PrintOut
DoCmd.OpenReport "leerseite", acViewNormal, "50 Filter Dienstauswahl"
ElseIf Reports!Fahrerdienstplan3.Pages = 1 Then
DoCmd.PrintOut
DoCmd.OpenReport "leerseite", acViewNormal, "50 Filter Dienstauswahl"
ElseIf Reports!Fahrerdienstplan3.Pages = 5 Then
DoCmd.PrintOut
DoCmd.OpenReport "leerseite", acViewNormal, "50 Filter Dienstauswahl"
Else
DoCmd.PrintOut
End If

DoCmd.Close acReport, "Fahrerdienstplan3", acSavePrompt
Next


ich denke, das sollte funktionieren

Gruß

Ralf
Bitte warten ..
Mitglied: jknapp
05.04.2008 um 21:33 Uhr
@jato11
Das ist schon richtig, aber wenn es so einfach wäre würde ich es so machen.
Ich muss ein wenig hocuspokus machen, damit die Ausgabe auf dem Drucker hinterher
genau so aussieht, wie es sein soll.

Wenn du mir sagen kannst, wie ich den bericht dazu bringe, nach einer bestimmten gruppierung
eine Leerseite einzufügen könnte es evtl. so auch gehen, aber das ist mir bisher nicht gelungen.

Zugegebenermassen bin ich eher ein VBA-Loser

@RDiller
Danke, dass könnte gehen. Leider begreif ich absolut ned, warum das nicht auch so funktioniert.
Wenn ich den "Zeilenwechsel" von Hand mache, funktioniert es.

Wofür brauch ich einen "Selected=True"-Befehl, wenn er nur optisch auswirkungen hat ?
Weiss der Gates ! ;O)

Ich poste wenns geht...
Bitte warten ..
Mitglied: jato11
06.04.2008 um 20:38 Uhr
Hast Du schon mal mit den Einstellungen im Bericht Versuche (Vor Bereich usw.) gemacht?

Wenn Du einen Seitenumbruch in den Gruppenkopf einfügst könnte auch eine Leerseite
dabei heraus kommen. Habe ich aber noch nicht ausprobiert.
Wöfür eine ist eine leere Seite Sinnvoll?

Viele Grüße
Torsten
Bitte warten ..
Mitglied: jknapp
07.04.2008 um 09:44 Uhr
Moin Moin !

wir drucken die Dinger für die Fahrer doppelseitig aus, dabei soll aber nicht Dienstplan
2 auf der Rückseite von Dienstplan 1 beginnen, wenn ich also drei seiten Bericht habe und gebe das an den Druckern, muss eine leerseite folgen (Rückseite 2. Blatt).

Gruß
Jochen
Bitte warten ..
Mitglied: jknapp
07.04.2008 um 16:56 Uhr
Ich komm damit nicht weiter !

Ich habe jetzt folgenden Code (auszugsweise):


Private Sub Button_Printall_Click()
Dim sqls As String 'Hier kommt das SQL Statement rein
Dim Value As String
Value = "206"

Abfragename = "04_1 Print1" ' Der Name Deiner Abfrage
Anz_zeilen = Kombinationsfeld2.ListCount - 1 'Die Anzahl der Einträge ermitteln. Liestcount startet mit 1, das Kombinationsfeld zum ansprechen mit 0

For Zeilen = 0 To Anz_zeilen
'Im Kombinationsfeld den entsprechenden Eintrag selektieren .Column(Spalte,Zeile)

sqls = " SELECT Fahrerdienstplan_T_temp.TJENEGEN_TJPLAN_NAVN, Fahrerdienstplan_T_temp.GODK_DATO, Fahrerdienstplan_T_temp.FRA_DATO, Fahrerdienstplan_T_temp.TJENEGEN_TJENESTE_NAVN, Fahrerdienstplan_T_temp.TJENEGEN_DELTJEN_LBNR, Fahrerdienstplan_T_temp.TJENEGEN_KODE_NAVN, Fahrerdienstplan_T_temp.DESTNAVN, Fahrerdienstplan_T_temp.Uhrzeit1, Fahrerdienstplan_T_temp.TEKST, Fahrerdienstplan_T_temp.ZNR, Fahrerdienstplan_T_temp.FRA_KL_TUR, Fahrerdienstplan_T_temp.FRA_KL_SORT, Fahrerdienstplan_T_temp.Gruppierung, Fahrerdienstplan_T_temp.KRPLAN, Fahrerdienstplan_T_temp.TRBUS_TURTYPE_LBNR, IIf([Patternnote1] Is Null,0,[Patternnote1]) AS Hinweis, Fahrerdienstplan_T_temp.Komm " _
& "FROM Fahrerdienstplan_T_temp " _
& "WHERE ((Fahrerdienstplan_T_temp.TJENEGEN_TJENESTE_NAVN) = ' " & Value & " ' "



Probleme macht er in der letzten Zeile, beim einfügen der Variablen, die ich zu testzwecken jetzt mal durch "Value" ersetzt habe,
um andere Fehler auszuschliessen.
Egal wie ich die in Anführungszeichen, einfach oder doppelt setze, macht er einen
Syntaxfehler beim ausführen. Habe auch schon " " & Value & " " " versucht, aber das rafft er nicht !

Ist das ein Formatierungsproblem ?
Auf was muss ich da achten ?

Vielen Dank schonmal !

Jochen
Bitte warten ..
Mitglied: jknapp
09.04.2008 um 11:25 Uhr
Also, das Teil läuft jetzt, manchmal muss man es mal ein, zwei Tage liegenlassen,
dann sieht man auch wieder fehlende Klammern und sowas.

Vielen Dank an Torsten und Ralf für die Hilfe !!!

Der Code von Ralf läuft jetzt einwandfrei.

DANKE !!!

Gruß
Jochen
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Microsoft Office
Kreuztabelle Access + VBA Code (7)

Frage von Dr.Cornwallis zum Thema Microsoft Office ...

VB for Applications
gelöst VBA: Wert von einer Website (pdf-Dokument) auslesen und in Excel kopieren (16)

Frage von Stern123 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...