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 Fehler im VBA-Code, Formular-Kriterium wird nicht gelöscht oder nicht überschrieben

Mitglied: redderblock

redderblock (Level 1) - Jetzt verbinden

27.08.2012 um 16:09 Uhr, 3482 Aufrufe, 3 Kommentare

Hallo zusammen,

mein Code soll das Datum aus einem Formularfeld als Kriterium in eine Abfrage einsetzen und das Abfrageergebnis dann in Excel ausgeben. Das klappt auch beim ersten Durchgang, aber beim zweiten Versuch mit anderem Startdatum erhalte ich weiterhin das alte Ergebnis. Ich habe das Startdatum "überwacht", es bleibt konstant auf dem zuerst eingegebnenen Wert, bis ich Access neu starte.

Des weiterem habe ich das Gefühl, dass ich aus dem DoCmd.Hourglass nicht mehr rauskomme, wenn ein Fehler auftritt, obwohl ich ein "On Error go To" definiert habe.

Optimal wäre es, wenn bei fehlerhafter Angabe des Datum im Formular ein Fehler erscheinen würde.

Folgendes war allerdings nicht erfolgreich:

01.
If IsNull(Me.Text10.Value) Then 
02.
    MsgBox "Bitte geben Sie ein Datum im Format TT.MM.JJJ an" 
03.
    Exit Sub 
04.
End If
Mein gesamter Code lautet wie folgt - Vielen Dank für euer Feedback:

01.
Private Sub Bild13_Click() 
02.
 
03.
   On Error GoTo ERR_Bild13_Click 
04.
 
05.
    Dim iCols As Integer 
06.
    Dim rs As DAO.Recordset 
07.
    Dim ws As Object 
08.
    Dim db As DAO.Database 
09.
    Dim qdf As DAO.QueryDef 
10.
    Dim Startdatum As String 
11.
                 
12.
    DoCmd.Hourglass True 
13.
             
14.
    Startdatum = Forms!Main!Text10 
15.
         
16.
    Set db = CurrentDb 
17.
    Set qdf = db.QueryDefs("FDB_Eskalationsliste_Abwicklung_1Step") 
18.
    qdf.Parameters("[Startdatum]") = Startdatum 
19.
 
20.
    'Neue Excel Datei, Arbeitsmappe und Worksheet erstellen 
21.
    Set ws = CreateObject("Excel.Application") 
22.
    ws.workbooks.Add 
23.
 
24.
    Set rs = qdf.OpenRecordset(dbOpenDynaset) 
25.
 
26.
    ' Nur was machen, wenn Daten vorhanden sind 
27.
    If Not rs.EOF Then 
28.
        rs.MoveFirst 
29.
        ' Daten nach Excel kopieren 
30.
        For iCols = 0 To rs.Fields.Count - 1 
31.
            ws.Cells(1, iCols + 1).Value = rs.Fields(iCols).Name 
32.
        Next 
33.
        ws.Range(ws.Cells(1, 1), _ 
34.
            ws.Cells(1, rs.Fields.Count)).Font.Bold = True 
35.
        ws.Range("A2").CopyFromRecordset rs 
36.
    End If 
37.
  
38.
    DoCmd.Hourglass False 
39.
     
40.
    ws.Visible = True 
41.
     
42.
    Set ws = Nothing 
43.
     
44.
    qdf.Close: Set qdf = Nothing 
45.
    rs.Close: Set rs = Nothing 
46.
    Set db = Nothing 
47.
     
48.
EXIT_Bild13_Click: 
49.
    Exit Sub 
50.
 
51.
ERR_Bild13_Click: 
52.
    MsgBox "Beim Daten-Export ist ein Fehler aufgetreten." 
53.
Resume EXIT_Bild13_Click 
54.
 
55.
End Sub
Mitglied: NetWolf
27.08.2012 um 19:58 Uhr
Grüß Gott,

Des weiterem habe ich das Gefühl, dass ich aus dem DoCmd.Hourglass nicht mehr rauskomme, wenn ein Fehler auftritt, obwohl ich ein "On Error go To" definiert habe.
und wo steht da, dass Hourglass = False ist? Hellsehen kann Access nicht

Optimal wäre es, wenn bei fehlerhafter Angabe des Datum im Formular ein Fehler erscheinen würde.
nichts leichter als das

Folgendes war allerdings nicht erfolgreich:

01.
> If IsNull(Me.Text10.Value) Then 
02.
>     MsgBox "Bitte geben Sie ein Datum im Format TT.MM.JJJ an" 
03.
>     Exit Sub 
04.
> End If 
05.
> 

Eine Variable kann drei Zustände haben:
- mit Daten gefüllt (z.B. 12.06.2012, oder auch nur die Trennpunkte xx.xx.xx)
- keine Daten (z.B. "" ohne etwas zwischen den Anführungsstrichen)
- oder NULL (nichts, rein gar nichts)

Du prüfst auf NULL und wirst bei einem Datum i.d.R. immer die Punkte haben, also eine Information (wenn auch kein Datum).
Übersetzte NULL ins deutsche mit "Nichts".

Wichtig ist die Feldtyp-Definition als Datum. Dann kannst du mit isDate() prüfen, ob es sich um ein Datum handelt.


Mein gesamter Code lautet wie folgt - Vielen Dank für euer Feedback:
@@--Dim Startdatum As String@@

nö, ein Datum ist ein Datum und kein String!!!
Dim Startdatum As date

Startdatum = Forms!Main!Text10
Das Feld Forms!Main!Text10 ist hoffentlich als Datum auf dem Formular formatiert!!
Tipp: wenn diese SUB im Formular läuft, reicht ein Me.Text10

qdf.Parameters("[Startdatum]") = Startdatum
Was soll diese Anweisung? Bitte beschreibe die Funktion mal ganz genau.

'erst mal zum Ende, dann zurück zum Anfang
rs.MoveLast
rs.MoveFirst

ws.Visible = True
'warum?
Set ws = Nothing
'wird doch hier gelöscht!

qdf.Close: Set qdf = Nothing
qdf.Close reicht vollkommen

rs.Close: Set rs = Nothing
rs.Close reicht vollkommen

Set db = Nothing
'wirklich? du hast vorher mit Set db = CurrentDb geschrieben = nutzte die aktuelle Datenbank, die gerade offen ist.
'hiermit machst du sie zu!?

ERR_Bild13_Click:
'kein Hourglass = false 'so wird das nichts mit dem Nachbarn

btw warum nutzt du nicht die Funktion Transferspreadsheed? Ist doch viel einfacher....

Grüße aus München
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: redderblock
28.08.2012 um 10:39 Uhr
Hallo Wolfgang,

danke erst einmal. Das löst mein Kernproblem aber immer noch nicht:

Mein zuerst eingegebenes Startdatum wird nach dem End Sub scheinbar gespeichert und auch bei einem im Formular geändertem Startdatum wieder verwendet.

Löse ich den Code erneut aus, ist das Startdatum zwar zunächst auf 00:00:00, ab Zeile 16 wird es aber auf das beim ersten Code-Durchlauf gewählte Datum gesetzt.

Das Formular-Feld habe ich als Datum formatiert, Dim Startdatum As date ist auch drin. Hourglass false war bereits in Zeile 38 vorhanden, ich habe es aber zusätzlich in Zeile 53 eingefügt.

qdf.Parameters("[Startdatum]") = Startdatum - Hier wird das Datum als Kriterium in meiner Abfrage qdf gesetzt.

Zwischenzeitlich dachte ich der Exit Sub in Zeile 49 führt dazu, dass die Variablen nicht gelöscht werden, aber ohne Error-Schleife habe ich das gleiche Problem.

ws = Nothing führt nicht dazu, dass das Startdatum gelöscht wird.

db.close anstelle Set bd nothing bringt keine Verbesserung.

Danke für eure Hilfe - ich suche immer noch nach einer Lösung.
Bitte warten ..
Mitglied: redderblock
28.08.2012, aktualisiert 29.08.2012
Die Lösung ist:

Mit einer echten Befehlsschaltfläche funktioniert's. Ich habe die Buttons leider aus Bildern gebaut und mit einem Code belegt.

Wenn man Bilder nimmt gilt:
Das Formularfeld behält solange seinen Wert, bis der Datensatz gewechselt wird.

Eine neue Eingabe bei einem Bild-Button funktioniert also, wenn man in ein anderes Feld eines Formulars geht.
Bitte warten ..
Ähnliche Inhalte
VB for Applications

Fehler im VBA Code. Kann Feld nicht von einer Datei in die andere uebernehmen

gelöst Frage von Detel1VB for Applications2 Kommentare

Hallo Profis! Bin ein Frischling in VBA. Ich moechte eine Excel Vorlage mit weiteren Felder anpassen. Habe jetzt versucht ...

Basic

Formeln in VBA Code einfügen

gelöst Frage von Dett18Basic6 Kommentare

Hallo liebe Excel VBA Gemeinde, ich habe hier eine Buchungsdatei, die mit Daten einer Rechnung gefüllt wird. Da ich ...

Microsoft

Mit VBA-Code ein Verzeichnis erstellen

gelöst Frage von DockMaster-deMicrosoft2 Kommentare

Hallo, ich habe mit MS Access 2010 eine Datenbank und ein Frontend. Daten werden über ein Formular eingegeben. Ich ...

Microsoft Office

Kreuztabelle Access + VBA Code

Frage von Dr.CornwallisMicrosoft Office7 Kommentare

Hallo zusammen, ich habe eine Kreuztabelle aus einer Query erzeugt, aus dieser entsteht wiederum ein Bericht, nun habe ich ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 8 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 8 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Viren und Trojaner
Neue Avira Management Console Egosecure
Information von OSelbeck vor 1 TagViren und Trojaner1 Kommentar

Hallöchen zusammen, ich weiß nicht, wer von euch noch Avira einsetzt Wir haben ein paar Kunden Avira hatte ja ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
Frage von YellowcakeExchange Server16 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Downgrade von Windows Server 2016 auf 2012 - Wie vorgehen?
Frage von EstefaniaWindows Server12 Kommentare

Guten Ich habe eine Frage an Erfahrene unter euch. Durch einen InPlace Upgrade wurde Windows Server 2012 auf die ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...

Datenschutz
Telematikinfrastruktur Erfahrungsaustausch
Frage von MOS6581Datenschutz12 Kommentare

Moin, unter meinen Kunden befinden sich auch einige Ärzte, welche sich künftig mit der Telematikinfrastruktur-Geschichte der Gematik herumärgern dürfen. ...