Office: (Office 2003) Leerschritte in Firebird DB

Helfe beim Thema Leerschritte in Firebird DB in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen ich entwerfe hier gerade eine kleine Anwendung welche mit einer Firebird DB zusammen arbeitet - auf der anderen Seite ist ein DMS... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von GTRDRIVER, 19. Dezember 2019.

  1. Leerschritte in Firebird DB


    Hallo zusammen

    ich entwerfe hier gerade eine kleine Anwendung welche mit einer Firebird DB zusammen arbeitet - auf der anderen Seite ist ein DMS System welches ebenfalls mit dieser FB DB arbeitet - auf DB und DMS habe ich keinen Einfluss.

    Mein problem sieht wie folgt aus:

    Entweder FB oder das DMS füllt bei TEXTFELDERN am ende eines Strings alles mit "Leerzeichen" auf.

    Beispiel: Es ist folgender String einer ET Nummer gespeichert:

    "B6Y1-14-302 9A"

    Dann ist in der DB gespeichert:

    "B6Y1-14-302 9A "

    Die hinten angehängte Leerzeichen kann ich natürlich innerhalb von VBA rauswerfen - ABER - wie mache ich hier für ein RecordSet einene funktionierende "Where SQL" Klausel ?

    Mit "Where ETNR Like "B6Y1-14-302*" kann ich nicht arbeiten da es z.b: auch "B6Y1-14-302A oder B6Y1-14-302 9A" usw geben kann.

    Mein Gedanke war jetzt in der Where Klausel die entsprechende "Leerschritte" aufzufüllen...

    Was meint Ihr ?

    :)
     
    GTRDRIVER, 19. Dezember 2019
    #1
  2. Welcher Datentyp wird innerhalb von Firebird verwendet?

    Das macht VBA bei einem String fixer Länge.
    Du könntest es damit versuchen.

    Verwendest du PassThrough bzw. ADODB oder Verknüpfungen?
     
    markusxy, 21. Dezember 2019
    #2
  3. Hi

    Ich habe die Tabellen ganz normal per odbc eingebunden und nutze ein normales RS
     
    GTRDRIVER, 21. Dezember 2019
    #3
  4. Leerschritte in Firebird DB

    Hi

    Ich habe die Tabellen ganz normal per odbc eingebunden und nutze ein normales RS
     
    GTRDRIVER, 21. Dezember 2019
    #4
  5. Code:
     
    Beaker s.a., 21. Dezember 2019
    #5
  6. Nein, bloß nicht! Damit machst du jegliche Indexnutzung und serverseitige Abfrageoptimierung unmöglich.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  7. Vermutlich ist der Datentyp auf dem Server CHAR(x). x definiert die Länge des Feldes. Beim CHAR Datentyp wird ein Feld immer auf seine definierte Länge mit Leerzeichen aufgefüllt.

    In der Situation ist es wahrscheinlich tatsächlich am besten, die Suchkriterien analog zu behandeln und mit Leezeichen bis zur definierten Länge aufzufüllen.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  8. Leerschritte in Firebird DB

    Hi

    klappt - ich habe ne kleine Routine gemacht die jeden String auf die fixe Breite hinten auffüllt - damit läuft das wie gewünscht ...

    Manchmal muss man echt von hinten durch ....
     
    GTRDRIVER, 21. Dezember 2019
    #8
  9. [OT, da die Lösung mit dem Auffüllen meiner Meinung nach am besten/sichersten ist]

    Hallo!

    Kleiner Einspruch *wink.gif*
    Das kommt darauf an, auf welcher Seite der Index wirken soll.
    Wenn nur ein Index für ETNR genutzt werden soll, ist der obige Ausdruck keine Index-Behinderung.

    mfg
    Josef
     
    Josef P., 21. Dezember 2019
    #9
  10. Hallo

    So da la ...

    Performant ist das nicht...
    Das sind aber auch gigantische Tabellen ...

    Evtl ueberrede ich den db admin noch eine vier für mich anzulegen...
     
    GTRDRIVER, 21. Dezember 2019
    #10
  11. Kleiner Widerspruch zum Einspruch! ;-)
    • Da sich die Leerzeichen im DB-Feld befinden, muss sich das Trim() auf ein DB-Feld beziehen, sonst tut es nix.
    • Wenn kein Index vorhanden ist oder ein vorhandener nicht genutzt werden soll, ist es natürlich keine Index-Behinderung.
    • Trim ist eine Access/VBA-Funktion. Ich habe nicht explizit geprüft, ob diese über ODBC an Firebird durchgereicht werden kann, aber die Wahrscheinlichkeit ist IMO nahe 100%, dass diese Funktion dazu führt, dass die komplette Verarbeitung der Where-Condition von Access und nicht vom Server durchgeführt wird.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  12. Man sollte in Betracht ziehen, dass bei dem rechten Feld des Vergleichs ebenfalls ein Tabellenfeld statt eines Parameters vorliegen könnte. Dann könnte/müsste man abwägen, auf welches der Felder man die Berechnung performanceschonender vornehmen könnte.

    Hat man auf der einen Seite einen Parameter, also einen dann konstanten Wert, dürften keine Fragen offen bleiben.
     
  13. Leerschritte in Firebird DB

    Wenn alle verwendeten Tabellen in der der gleichen DB sind, könnte eine Pass-Through-Abfrage die Auswertungsgeschwindigkeit erhöhen - so kann man zumindest ausschließen, dass Access/Jet/ACE in die Sql-Ausführung "reinpfuscht".

    mfg
    Josef
     
Thema:

Leerschritte in Firebird DB

Die Seite wird geladen...
  1. Leerschritte in Firebird DB - Similar Threads - Leerschritte Firebird

  2. Wie prüfen ob sich in einer Tabelle (ODBC Firebird) was verändert hat ?

    in Microsoft Access Hilfe
    Wie prüfen ob sich in einer Tabelle (ODBC Firebird) was verändert hat ?: Hallo zusammen mal wieder firebird und Access ... Ich habe her noch immer ein Projekt bei dem Tabellen aus einer FB Datenbank via ODBC eingebunden sind. (sehr geringe Datenmengen daher spielt...
  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