Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: jknapp

jknapp (Level 1) - Jetzt verbinden

04.04.2008, aktualisiert 09.04.2008, 15277 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 ..
Ähnliche Inhalte
Microsoft Office

Zeilen bis zum nächsten gesuchten Wert zählen

gelöst Frage von mreskeMicrosoft Office6 Kommentare

Hallo, hat vielleicht jemand eine Idee, mit welcher Formel in Spalte C ich die Anzahl der Zeilen bis zum ...

VB for Applications

Web-Formular (Auswahlliste) Wert per Excel-VBA auswählen und absenden

gelöst Frage von machohunkVB for Applications5 Kommentare

Hallo, ich bin bisher leider beim Versuch gescheitert per Excel-VBA auf einer Webseite den Wert in einer Auswahlliste von ...

Microsoft Office

Excel VBA Wert hochzählen

gelöst Frage von Florian86Microsoft Office1 Kommentar

Hallo, ich habe im VBA Code folgendes stehen Range("E10") = Range("E10") + 1 Jetzt ist der Wert bei schon ...

VB for Applications

Excel VBA - Auswahl aus Listbox bearbeiten

Frage von MasterSchlumpfVB for Applications1 Kommentar

Hallo Profis, ich benötige Eure Hilfe in Excel VBA. Ich lasse den Inhalt einer Tabelle in einer Listbox anzeigen. ...

Neue Wissensbeiträge
Sicherheit
Adminrechte dank Bug in Intel HD Graphics Treiber
Information von DerWoWusste vor 11 StundenSicherheit

Intel HD graphics 4200 und neuer (4400, 4600 520,530,620, 630,) sind auf jeden Fall betroffen und bereinigte Treiber sind ...

Router & Routing

Endlich: Reines Kabel-TV Modem in D erhältlich !

Information von aqui vor 3 TagenRouter & Routing10 Kommentare

Mit dem Technicolor TC4400-EU Modem sind nun auch Breitband Router ohne integriertes Modem oder Firewalls wie z.B. die pfSense ...

Netzwerkgrundlagen
The Illustrated TLS Connection
Information von Lochkartenstanzer vor 3 TagenNetzwerkgrundlagen1 Kommentar

Moin, Unter findet man eine gelungene Erläuterung von TLS. Fördert sehr das verständnis darüber, was da passiert. lks

Windows 10

Zuverlässiger Remove-AppxProvisionedPackage Ausführen in W10-1803

Tipp von NetzwerkDude vor 5 TagenWindows 104 Kommentare

Moin, Remove-AppxProvisionedPackage hat in 1709 recht zuverlässig funktioniert, in 1803 ist es leider so das es gerne mail failed ...

Heiß diskutierte Inhalte
Windows Server
AD User wird immer wieder gesperrt
Frage von YellowcakeWindows Server20 Kommentare

Hey ich habe einen User (ein GL User - Natürlich was denn sonst) der immer wieder gesperrt wird. Ich ...

Windows Netzwerk
Gruppenrichtlinie für einen PC deaktivieren
gelöst Frage von Florian961988Windows Netzwerk14 Kommentare

Hallo, kleines Problem und immoment finde ich dazu keine Lösung oder mir fällt nicht ein, wie ich es suche ...

Debian
Linux debian 9 Installation
Frage von Green14Debian13 Kommentare

Hallo zusammen, ich habe mich ein wenig mit Debian auseinandergesetzt und möchte mir eine Standard-Installation als Grundlage für andere ...

Switche und Hubs
OpenSource oder Freeware zur Verwaltung von Switchen
gelöst Frage von JonskezSwitche und Hubs12 Kommentare

Hallo, gibt eine kostenlose Verwaltungssoftware für Switche (überwiegend HP/Aruba)? Es sollte möglich sein, aus der Ferne z.B. die Firmware ...