AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi IBTable.Locate funktioniert nicht bei FB Dialekt 3

IBTable.Locate funktioniert nicht bei FB Dialekt 3

Ein Thema von ralfiii · begonnen am 9. Mär 2011 · letzter Beitrag vom 1. Apr 2011
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

AW: IBTable.Locate funktioniert nicht bei FB Dialekt 3

  Alt 10. Mär 2011, 12:38
Was passiert bei TIBDataset (anstelle von TIBQuery)?
Komplett gleiches Verhalten
mit loPartialKey würd's gehen, aber da bleibt das Problem, dass beim Auslesen der viel zu lange String zurückgegeben wird.

In den Feldern sind in der App an der ich arbeite GUIDs drin, immer 32 Zeichen lang.
Das Feld ist als Char(32) definiert, und jetzt spinnt Delphi herum und gibt die Guids mit ewig vielen trailing spaces zurück
Beim Auslesen an zig-hundert Stellen ein Trim() herumzuwickeln ist eine potentielle Fehlerquelle, gefällt mir garnicht.

Geändert von ralfiii (10. Mär 2011 um 12:41 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: IBTable.Locate funktioniert nicht bei FB Dialekt 3

  Alt 10. Mär 2011, 13:47
Hi,

habe das eben mal mit den IBDAC nachvollzogen und mit den IBX verglichen (Delphi XE): Die IBX zeigen das Verhalten, die IBDAC nicht, d.h. das liegt nicht an Firebird sondern an den IBX. Wobei wir dann wieder da wären was ich oben schon geschrieben habe: IBX und Firebird passen halt einfach nicht mehr zusammen...

Grüße
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

AW: IBTable.Locate funktioniert nicht bei FB Dialekt 3

  Alt 10. Mär 2011, 14:05
Habe es hier auch mal mit FibPlus getestet. Die IBX haben keine Option die Felder direkt zu trimmen. Bei mir heisst die : poTrimCharFields. Standard ist da true, deshalb fiel mir das Verhalten bisher auch nicht auf. Getestet mit D7. In D2009 finde ich Interbase gerade nicht. Vielleicht gibts ja da was.
Gruß
Hansa
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: IBTable.Locate funktioniert nicht bei FB Dialekt 3

  Alt 10. Mär 2011, 14:16
Mönsch Hansa

Recht hast Du. Ist bei IBDAC auch so... da gibts auch ne entsprechende Option... Allerdings ist mir jetzt noch aufgefallen, dass die CHAR(30) genau 30 Zeichen lang sind, da wird aber keine weiteren Chars angehängt wie oben beschrieben... seltsam... hängt dann vielleicht auch noch an der IBX-Version?

Grüße
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

AW: IBTable.Locate funktioniert nicht bei FB Dialekt 3

  Alt 10. Mär 2011, 14:43
..ist mir jetzt noch aufgefallen, dass die CHAR(30) genau 30 Zeichen lang sind, da wird aber keine weiteren Chars angehängt wie oben beschrieben...
Da wird nichts angehangen. CHAR (30) heisst : 30 Zeichen. VARCHAR (30) heisst : 30 Zeichen. D.h. bei 3 Zeichen und Definition von 30 als Feldlänge werden 27 Leerzeichen aufgefüllt (bei CHAR). Der Unterschied ist eben : CHAR belegt, ob nötig oder nicht die 30 Zeichen. VARCHAR nur soviel wie nötig ist (in dem Fall also nur 3). Letzteres bedeutet einen zusätzlichen Rechenaufwand (hin und her-Rechnerei, wenn sich die Länge ändert...), ersteres einen höheren Speicherplatzbedarf auf der Platte. Ich tendiere mittlerweile etwas mehr zu VARCHAR, denn meistens werden die Felder gar nicht richtig ausgenutzt.
Gruß
Hansa
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: IBTable.Locate funktioniert nicht bei FB Dialekt 3

  Alt 10. Mär 2011, 14:48
Hi Hansa
Da wird nichts angehangen. CHAR (30) heisst : 30 Zeichen. VARCHAR (30) heisst : 30 Zeichen.
doch:

In den Feldern sind in der App an der ich arbeite GUIDs drin, immer 32 Zeichen lang.
Das Feld ist als Char(32) definiert, und jetzt spinnt Delphi herum und gibt die Guids mit ewig vielen trailing spaces zurück
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: IBTable.Locate funktioniert nicht bei FB Dialekt 3

  Alt 10. Mär 2011, 14:50
Hallo,

Zitat:
Der Unterschied ist eben : CHAR belegt, ob nötig oder nicht die 30 Zeichen
Einspruch Eurer Ehren !

Unter Firebird werden Char und VarChar gleich gespeichert.
Sie werden sogar per RLE noch "gezippt".

Der Unterscheid liegt bei der Übergabe/Darstellung beim Client.

Char(30): 30 Zeichen kommen beim Client an.
VarChar(30): X Zeichen kommen beim Client an (in Abhängigkeit des tatsächlichen Inhaltes).

Vor FB 1.5 wurde beim Char sogar das komplette Char(30) übertrage, danach nur noch die tatsächlichen Bytes.
Das Auffüllen mit Leerzeichen beim Char macht jetzt die fbclient.dll


Heiko
Heiko
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

AW: IBTable.Locate funktioniert nicht bei FB Dialekt 3

  Alt 10. Mär 2011, 15:14
Ah ja, dann hat sich da ja was geändert. Sie wollten da wohl hauptsächlich die Netzwerk-Belastung reduzieren und die Arbeit an die Clients delegieren. Oder bei CHAR eben nicht. Wie bereits vermutet : das nimmt sich nicht viel. Bei mir gibts nur CHAR, das sind nämlich 3 Zeichen weniger zu schreiben. IBX nutze ich ja vorsichtshalber auch nicht, insofern : egal.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#9

AW: IBTable.Locate funktioniert nicht bei FB Dialekt 3

  Alt 14. Mär 2011, 16:41
Da wird nichts angehangen. CHAR (30) heisst : 30 Zeichen.
Wenn das so wäre, dann wäre ich schon aus dem Schneider!
Hinterhältigerweise ist dem eben NICHT so.
Wenn du ein Feld mit Char(10) definierst kriegst du (mit Dialekt 3) dann plötzlich immer 40 Zeichen (Länge*4) zurückgeliefert
Da spinnt IBX leider völlig. Hab das grad unter D2010 und unter D2007 getestet, in beiden Fällen die gleiche Katastrophe.

Und das macht dann in meinem Fall massiv Probleme.

Hiiiilfe!!!
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: IBTable.Locate funktioniert nicht bei FB Dialekt 3

  Alt 14. Mär 2011, 17:00
HI Ralfii,

wie oben beschrieben hatte ich "nur" das reguläre Verhalten. Könnte jetzt ggf. noch an der Kombination IBX+fbClient.dll Version hängen. Nur zur Sicherheit: Verwendest Du die vom FB-Setup erzeugte gds32.dll (versionsnummer 6.x) oder eine einfach kopierte fbclient.dll (Versionsnummer 2.x)? Im zweiten Fall bitte mal mit der von instClient.exe erzeugten gds32.dll arbeiten.
Ansonsten: Weg von IBX!

cu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz