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

Frage Entwicklung VB for Applications

Mitglied: redderblock

redderblock (Level 1) - Jetzt verbinden

27.08.2012 um 16:09 Uhr, 3468 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 ...

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

VB for Applications
Excel VBA Code
gelöst Frage von specialuserVB for Applications2 Kommentare

Hallo zusammen, Hab hier einen Button in einer Excel mit Makros erstellt. Der Button hat die Funktion aus der ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 9 StundenMikroTik RouterOS4 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 9 StundenSicherheit

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 12 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 17 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Frage von ahstaxVisual Studio24 Kommentare

Hallo, ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...