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

Frage Entwicklung VB for Applications

Mitglied: jknapp

jknapp (Level 1) - Jetzt verbinden

04.04.2008, aktualisiert 09.04.2008, 15132 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
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless8 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...