Office: (Office 2000) Beim Öffnen der DB eine Tabelle aktualisieren

Helfe beim Thema Beim Öffnen der DB eine Tabelle aktualisieren in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Mir ist aufgefallen, wenn die Daten von einem SQL-Server geholt und Datumfelder mit einer Zahl gefiltert werden, dann werden falsche Ergebnisse... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von King Lui, 29. Januar 2008.

  1. Beim Öffnen der DB eine Tabelle aktualisieren


    Mir ist aufgefallen, wenn die Daten von einem SQL-Server geholt und Datumfelder mit einer Zahl gefiltert werden, dann werden falsche Ergebnisse geliefert .....

    z. B. ergibt im VBA-Direktbereich

    ? date-3 , cdbl(date-3)
    29.01.2008 39476

    Wenn ich nun die Zahl 39476 per Rechter Maustastemenü als Filter einfüge, dann werden alle Datensätze vom Datum 31.01.2008 (2 Tage später !?) angezeigt.

    Wenn ich aber CDbl(Tabellendatumfeld) = 39476 verwende, dann werden die richtigen Daten (29.01.2008) angezeigt.

    Deshalb vorsichtshalber auch auf der linken Seite CDbl oder Clng, wenn das Kriterium auf der rechten Seite eine Zahl ist.

    Getestet unter WinWP SP2, Access 2002
     
  2. Besser als CDbl ist wahrscheinlich sogar CInt! Dann macht es auch Sinn, das Datenfeld ebenfalls zu konvertieren. *wink.gif*
     
    Anne Berg, 1. Februar 2008
    #47
  3. Indizes werden durch solch Verrenkungen aber ausgehebelt.

    In dem Fall sollte man die Werte wirklich als Datumsstring übergeben und auf die vermeintliche Abkürzung verzichten.


    BTW: Wird hier ein SQL-Server eingesetzt, dann habe ich das bisher überlesen.
     
    Arne Dieckmann, 1. Februar 2008
    #48
  4. Beim Öffnen der DB eine Tabelle aktualisieren

    NEEEEEIIIIIIN!!! *biggrin.gif*

    Wenn man ODBC nutzt, dann muss man unbedingt darauf achten wie Daten ausgetauscht werden.
    Jet: Cdate(0) => 30.12.1899 00:00:00
    SQL-Server: convert(datetime, 0,114) => 1900-01-01 00:00:00.000

    Wenn nun mit einer Access-Abfrage eine verknüpfte Tabelle gefiltert wird, dann wird versucht so viel wie möglich vom Server abarbeiten zu lassen. => ODBC gibt die Where-Anweisung an den Server weiter. Vermutlich erkennt ODBC in diesem Fall nicht, dass es sich um einen Datumswert handelt und gibt die Zahl "unkonvertiert" weiter. => falsche Filterung im SQL-Server, der die Zahl implizit in ein Datum für den Where-Ausdruck konvertiert.

    Code:
    verhindert, dass die Bedingung an den Server weitergegeben werden kann. Aber, es müssen damit alle DS vom FE ermittelt werden => Trafic steigt.
    In diesem Fall wäre es also - finde ich zumindest - besser, statt der Zahl einen Datumsausdruck mit #datwert# in der Access-Abfrage zu verwenden.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Josef P., 1. Februar 2008
    #49
  5. Nachdem ich meine Ohren durchgepustet habe und ich nun langsam wieder hören kann, vielleicht dann so .....

    Private Sub Form_Load()
    Dim strSQL As String
    MsgBox "Die Datenbank wird aktualisiert"
    strSQL = "UPDATE Eskalationen SET Eskalationen.Trekking = 'Überfällig' " & _
    "WHERE ( Eskalationen.FBMail_Datum < #" & Date() - 21 & "# );"
    CurrentDb.Execute strSQL, dbFailOnError
    End Sub
     
  6. Hallo Josef,
    das musste ich jetzt gleich mal ausprobieren, da ich in meinen ODBC-Tabellen oft nach Datum selektieren muss und die Formatierung mit den Lattenzäunen recht lästig finde.

    Ergebnis:
    - Suche nach Datenfeld = CDbl(DateValue("04.01.2008")) liefert Datensätze zum 5.1.2008
    - Suche nach CDbl(Datenfeld) = CDbl(DateValue("04.01.2008")) liefert korrektes Ergebnis - aber das dauert, soweit klar!

    Hast du eine Erklärung? (oder habe ich deine obigen Ausführungen falsch verstanden?)

    Die Abfrage mittels CLng macht da übrigens keinen Unterschied, aber das Datum enthält in diesem Fall auch keine Zeitangabe. Ansonsten wäre das wohl durchaus zu beachten!
     
    Anne Berg, 1. Februar 2008
    #51
  7. Für solche Fälle verwende ich eine Hilfsfunktion, die je nach Art der SQL-Anweisung (Jet-SQL, T-SQL) einen passenden String liefert, falls ich die SQL-Anweisung per VBA dynamisch zusammensetze.

    Die Erklärung versuchte ich #49. ... Ich probiere es aber noch einmal mit anderern Worten. *wink.gif*
    Das "0-Datum" unterscheidet sich beim SQL-Server und Jet.
    Da vermutlich per ODBC eine Zahl 1:1 an den Server übertragen wird, ist die Ermittlung des Vergleichswertes für den Datumsfilter nicht identisch.
    Im SQL-Server müsste ungefähr so eine SQL-Anweisung ausgeführt werden
    Code:
    Warum aber bei dir DS vom 5.1. geliefert werden ist etwas kurios, ich hätte DS vom 6.1. erwartet.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Josef P., 1. Februar 2008
    #52
  8. Beim Öffnen der DB eine Tabelle aktualisieren

    Nun, meine Daten kommen ja nicht von einem SQL-Server! *wink.gif*

    Mein Fazit: ich lasse also lieber die Finger davon und verfahre weiterhin nach FAQ 6.8.
     
    Anne Berg, 1. Februar 2008
    #53
  9. Hallo zusammen,

    ich bin nun wieder online.

    Zur Klarstellung: Es wird kein SQL-Server benutzt.
     
    King Lui, 1. Februar 2008
    #54
  10. [OT]

    *biggrin.gif* ... ach so. Ich nahm an, dass du es auch damit probiert hast, da du dein DBMS nicht erwähntest. *wink.gif*

    [/OT]

    @kINg Lui:
    Wie sieht der SQL-String bei dir exakt aus, den du per VBA zusammensetzt?
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Josef P., 1. Februar 2008
    #55
  11. Hallo Josef,

    hier der Code, der in meinem Startformular steht:
    Die letzten Vorschläge, z.B. von Unreg5 habe ich aber noch nicht ausprobieren können
     
    King Lui, 1. Februar 2008
    #56
  12. Mach mal folgendes: Setze ein Debug.Print strSQL vor das Execute und schau dir den String im Direktfenster an. Dann kopierst du ihn ins SQL-Fenster einer neuen, leeren Abfrage und führst ihn von dort her aus. Dann sehen wir weiter...
     
    Anne Berg, 1. Februar 2008
    #57
  13. Beim Öffnen der DB eine Tabelle aktualisieren

    MIt SQL-String meinte ich zwar den Inhalt von strSQL, aber den konnte ich mir in diesem Fall selbst ermitteln. *wink.gif*

    Code:
    => Wenn die Feldbezeichnungen und die Datentypen passen, sollte diese Anweisung ausgeführt werden können.
     
    Josef P., 1. Februar 2008
    #58
  14. Hallo Josef,

    damit erhalte ich die Fehlermeldung:

    Verwendung von Null unzulässig
     
    King Lui, 1. Februar 2008
    #59
  15. Anne Berg, 1. Februar 2008
    #60
Thema:

Beim Öffnen der DB eine Tabelle aktualisieren

Die Seite wird geladen...
  1. Beim Öffnen der DB eine Tabelle aktualisieren - Similar Threads - Öffnen Tabelle aktualisieren

  2. VBA - Excel Tabelle in PPT durch Doppelklick in Excel öffnen

    in Microsoft PowerPoint Hilfe
    VBA - Excel Tabelle in PPT durch Doppelklick in Excel öffnen: Hallo, ich habe folgendes Problem und hoffe es kann mir vielleicht jemand weiterhelfen. Ich habe eine PPT Präsentation mit einer Excel Tabelle (keine normale Tabelle). Die Excel Tabelle ist...
  3. Mehrere CSV-Dateien öffnen und in einer Tabelle einfügen

    in Microsoft Excel Hilfe
    Mehrere CSV-Dateien öffnen und in einer Tabelle einfügen: Vorweg: Ich habe dieselbe Frage vor ein paar Tagen auf www.office-loesungen.de gestellt und leider keine Antwort bekommen. Link dazu: http://www.*************************417147_0_0_asc.php Sollte...
  4. mit VBA Tabelle öffnen und zu bestimmten Datensatz springen

    in Microsoft Access Hilfe
    mit VBA Tabelle öffnen und zu bestimmten Datensatz springen: Hallo zusammen, Ich weiß die Frage ist ziemlich peinlich, aber ich suche jetzt bereits den ganzen Tag nach einer Lösung für dieses vermeintlich einfache Problem. Konkret möchte ich in einem...
  5. Word ändert Tabelle automatisch beim Öffnen

    in Microsoft Word Hilfe
    Word ändert Tabelle automatisch beim Öffnen: Hallo! Folgendes Problem: meine Freundin hat auf ihrem Rechner eine Word-Datei erstellt, die eine Tabelle enthält. Per USB-Stick haben wir diese auf meinen Rechner gezogen, um sie auszudrucken....
  6. DBASE Tabellen öffnen

    in Microsoft Excel Hilfe
    DBASE Tabellen öffnen: hi, kennt Jemand die Lösung für folgendes Problem? Office 2003 SPII Wir machen eine Auswertung in einer Excell Tabelle von 5 verschiedenen Dbase Tabellen. Früher konnte ich alle DBF`s...
  7. Excel Tabelle lässt sich nur in einer Outlook-Maske öffnen.

    in Microsoft Outlook Hilfe
    Excel Tabelle lässt sich nur in einer Outlook-Maske öffnen.: Per e-mail habe ich eine excel-Tabelle erhalten und möchte diese nun weiterbearbeiten. Wenn ich diese Tabelle nun öffne während mein Outlook bereits geöffnet ist, so lässt sich diese...
  8. beim Öffnen der Tabelle,das Tagesdat. aus d.Datenreihe suche

    in Microsoft Excel Hilfe
    beim Öffnen der Tabelle,das Tagesdat. aus d.Datenreihe suche: Hallo Excelfreunde, ich habe eine Urlaubsliste erstellt und möchte noch diverse Verbesserungen einbauen. In der Tabelle hat jeder Tag eine Spalte (1/2 Jahr) Gibt es eine Möglichkeit ,den...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden