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, 15260 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
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. ...

Microsoft Office

Excel VBA mehrere Zellen auswählen

gelöst Frage von MWTUJEMicrosoft Office3 Kommentare

Hey Leute, ich habe hier ein Problem bei der VBA-Programmierung. Ich habe ja die Möglichkeit mit Range mehrere Bereiche ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 12 StundenErkennung und -Abwehr1 Kommentar

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 19 StundenVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Drucker und Scanner
HP-MF-Drucker per Fax angreifbsr
Information von Lochkartenstanzer vor 2 TagenDrucker und Scanner3 Kommentare

Endlich eine sinnvolle Verwendung für Faxe: Damit kann man offensichtlich den Drucker übernehmen. lks

Router & Routing

Das pfSense Buch ist jetzt für jeden kostenlos zu beziehen

Tipp von magicteddy vor 3 TagenRouter & Routing2 Kommentare

Bisher war das Buch nur für zahlende Unterstützer verfügbar, jetzt steht für Jedermann kostenlos zur Verfügung. Siehe auch The ...

Heiß diskutierte Inhalte
Microsoft
VPN Verbindung kann nicht aufgebaut werden
Frage von AlexderITlerMicrosoft35 Kommentare

Hallo, Ich möchte an einem unserer PCs in unserer Tochterfirma eine VPN zu unserem Netzwerk einrichten. Das schlägt allerdings ...

Windows Server
Domäne einsilbig mit nur einem Namen benannt - sowie AD und MX auf einer VM Kardinalsfehler?
Frage von TomTestWindows Server27 Kommentare

Hallo liebe Freunde gepflegter Probleme, seit kurzem soll ich eine Domäne verwalten die zuvor von einem IT-Dienstleister erstellt und ...

Datenbanken
MySQL Datenbank Import Aufgabe für mehrere .csv dateien
gelöst Frage von Marcel1989Datenbanken19 Kommentare

Hi, ich komm nicht weiter. Ich hab auf einem Windows Server 2012 r2 eine MariaDB/MySQL laufen. Nun soll diese ...

DNS
Gibt es eine Art DNS Proxy?
Frage von icepietDNS15 Kommentare

Hallo Nerds, Ich würde gerne folgendes machen: ts.domain.de:3389 soll auf 1.2.3.4:3389 auflösen ts2.domain.de:3389 soll auf 1.2.3.4:3390 auflösen Gibt es ...