![]() |
AW: Firebird Embedded + AUTOINC
Wenn der Stürmer nicht trifft, ist der Ball Schuld :roll:
|
AW: Firebird Embedded + AUTOINC
Eigentlich ganz normal. :gruebel:
SQL-Code:
Und probehalber auch
SELECT *
FROM tabelle ORDER BY spalte1, spalte2
SQL-Code:
Als Ergebnis kommt aber immer die Erstellungsreihenfolge der Datensätze in der Tabelle raus.
...
ORDER BY spalte1 ... ORDER BY spalte1 DESC Einfach mal alles Wichtige aus der DFM. Im Code steht praktisch nur noch das Open. Und in ".\Firebird Embeded" liegt der gesamte Inhalt der ZIP. (die Verzeichnisse sind aktuell aber absolute Pfade, damit ich die Connection auch in der IDE auf bekomm)
Code:
object FDPhysFBDriverLink: TFDPhysFBDriverLink
DriverID = 'FirebirdEmbedded' VendorLib = '.\Firebird Embeded\fbembed.dll' Embedded = True Left = 64 Top = 72 end object FDConnection: TFDConnection Params.Strings = ( 'Database=.\database.ib' 'Password=masterkey' 'User_Name=sysdba' 'CharacterSet=UTF8' 'OpenMode=OpenOrCreate' 'DriverID=FirebirdEmbedded') Connected = True LoginPrompt = False Left = 168 Top = 72 end object FDGUIxWaitCursor: TFDGUIxWaitCursor Provider = 'Forms' Left = 272 Top = 72 end object FDStanStorageBinLink: TFDStanStorageBinLink Left = 376 Top = 72 end object DBGridSeries: TDBGrid Left = 8 Top = 483 Width = 257 Height = 118 Anchors = [akLeft, akBottom] DataSource = DataSourceSeries Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgAlwaysShowSelection, dgConfirmDelete, dgTitleClick, dgTitleHotTrack] TabOrder = 2 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'Tahoma' TitleFont.Style = [] end object FDQuerySeries: TFDQuery AfterScroll = FDQueryCountryAfterScroll FilterOptions = [foCaseInsensitive] IndexFieldNames = 'series_id' Connection = FDConnection UpdateOptions.AssignedValues = [uvGeneratorName] UpdateOptions.GeneratorName = 'euro_series_gen_id' UpdateOptions.UpdateTableName = 'euro_series' UpdateOptions.KeyFields = 'series_id' UpdateOptions.AutoIncFields = 'series_id' SQL.Strings = ( 'SELECT *' 'FROM euro_series' 'ORDER BY series_name, series_id') Left = 168 Top = 128 object FDQuerySeries_series_id: TIntegerField DisplayLabel = 'ID' DisplayWidth = 7 FieldName = 'series_id' Origin = 'series_id' ReadOnly = True Required = True end ... end; object DataSourceSeries: TDataSource DataSet = FDQuerySeries Left = 168 Top = 184 end object DBNavigatorSeries: TDBNavigator Left = 115 Top = 460 Width = 150 Height = 22 DataSource = DataSourceSeries VisibleButtons = [nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh] Anchors = [akLeft, akBottom] TabOrder = 3 end |
AW: Firebird Embedded + AUTOINC
Würd ich auch mal für ein Gerücht halten, dass FB nicht sortieren kann. Vielleicht ein Charset/Collate Problem?
Noch ein Gedanke zu Sequenzen: Eine tabellenübergreifende ID per Sequenz ergibt immer leere Mengen, bei falschen Joins. Im Gegensatz zu fortlaufenden ID je Tabelle, falsche Joins spucken dann brav Schrott aus. Zugegeben, Ursache ist ein falsches Select, aber ich finde den Effekt ganz nett. |
AW: Firebird Embedded + AUTOINC
Zitat:
Zitat:
|
AW: Firebird Embedded + AUTOINC
Zitat:
Danke. Sortiert das eigentlich auch neue Datensätze? (die werden ja erst nach dem Refresh richtig einsortiert) Werd es dann gleich ausprobieren ... falls ich's richtig mach und es nicht nur zufällig irgendwas macht, wo ich dann denk es ist immer so. :stupid: Zitat:
Der Debugger meint da steht was drin (eine "1"). Diese wurde/wird im AfterInsert gefüllt und ist beim Post auch immernoch drin. Und wie man FireDAC dazu bekommt die drangejointen Felder und das AutoInc beim Post richtig zu laden und nicht erst beim nächsten manuellen Refresh. |
AW: Firebird Embedded + AUTOINC
Zitat:
Und es schadet auch nicht, immer mal wieder auf Unzulänglichkeiten hinzuweisen, wenn welche auffallen. U.U. sitzt die Unzulängichkeit ja vor der Tastatur, und man kann noch etwas dazu lernen. Aber deswegen müssen wir uns doch nicht die Schädel einschlagen? Oder? Gruß K-H |
AW: Firebird Embedded + AUTOINC
Zitat:
![]() Oder anders ausgedrückt: Bislang ist es mir noch niemals untergekommen, daß eine via IndexFieldNames sortierte Datenmenge nach dem Einfügen oder Ändern eines Datensatzes nicht mehr korrekt sortiert war, und zwar bei allen mir bekannten Datenbank-Komponenten (FireDac, FibPlus, IbDac, dbGo, Zeos usw.). Einzig mit der BDE hab ich keinerlei Erfahrung vorzuweisen, aber die sollte man ja sowieso nicht mehr einsetzen. |
AW: Firebird Embedded + AUTOINC
Hatte bisher nur im Grid sortiert (was richtige Grids ja können) oder halt über das SELECT und die Sortierung vom Select wird ist nach dem Laden nicht mehr existent.
Neue Zeilen rutschten beim ORDER-BY da rein, wo der Cursor grade stand (Insert) oder ans Ende (Append). |
AW: Firebird Embedded + AUTOINC
Soooo, ich glaub nun geht erstmal alles wieder. :firejump:
Hätte nicht gedachte, daß für solche "Kleinigkeiten" so viel Zeit drauf geht. Zuletzt gab es nur bei dem Query probleme, mit JOINs drin. Anfangs ging es und dann plötzlich nicht mehr, obwohl ich mich nicht erinnern kann da was Schlimmes geändert zu haben. Waren beim Insert Fehler wie Folgendes, obwohl das Feld nachweislich gefüllt war. [FireDAC][Phys][FB]validation error for column "COINS_SERIES", value "*** null ***" Oder beim Löschen "Feld xxxx nicht gefunden", was auch klar war, denn das kam auch aus einem JOIN. Viel rumprobiert und ich glaub FireDAC ignoriert die ProviderFlags, mit welchen es (vor)zuletzt versuchte. Nun ja, aus "SELECT *, xxx, yyy" statt "SELECT xxx, yyy, *" versucht und nun geht es und grade beim Schreiben fällt mir was auf. :wall: Das Feld "NULL" war bestimmt zwei mal drin, wegen dem * (anfangs war das bestimmt noch tabelle.*) [edit] Nee, es war doch "SELECT xxx, yyy, tabelle.*" und jetzt mit "SELECT tabelle.*, xxx, yyy" geht es und außerdem hab ich die Reihenfolge der Felder in der Query-Komponente umgedreht, so wie es Jetzt im Query steht. [edit2] Letzteres hat keinen Einfluß. |
AW: Firebird Embedded + AUTOINC
Bequemer und eleganter find ich's, mit Views zu arbeiten: Du legst deine Joins praktisch schon in der DB an und kannst dann darin nach Herzenslust blättern und sortieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 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