AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird Embedded + AUTOINC
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Embedded + AUTOINC

Ein Thema von himitsu · begonnen am 17. Jan 2015 · letzter Beitrag vom 10. Okt 2015
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#21

AW: Firebird Embedded + AUTOINC

  Alt 18. Jan 2015, 16:01
Wenn der Stürmer nicht trifft, ist der Ball Schuld
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#22

AW: Firebird Embedded + AUTOINC

  Alt 18. Jan 2015, 16:17
Eigentlich ganz normal.
SQL-Code:
SELECT *
FROM tabelle
ORDER BY spalte1, spalte2
Und probehalber auch
SQL-Code:
...
ORDER BY spalte1

...
ORDER BY spalte1 DESC
Als Ergebnis kommt aber immer die Erstellungsreihenfolge der Datensätze in der Tabelle raus.

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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (18. Jan 2015 um 16:21 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#23

AW: Firebird Embedded + AUTOINC

  Alt 18. Jan 2015, 16:18
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#24

AW: Firebird Embedded + AUTOINC

  Alt 18. Jan 2015, 16:35
Als Ergebnis kommt aber immer die Erstellungsreihenfolge der Datensätze in der Tabelle raus.
Na, das sagst du doch der Query aber auch:

Zitat:
IndexFieldNames = 'series_id'
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#25

AW: Firebird Embedded + AUTOINC

  Alt 18. Jan 2015, 17:01
Na, das sagst du doch der Query aber auch:

Zitat:
IndexFieldNames = 'series_id'
und dann stammt dieser Eintrag noch aus den Versuchen mit MySQL.

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.


Zitat:
[FireDAC][Phys][FB]validation error for column "COINS_SERIES", value "*** null ***"
Jetzt muß ich nur noch die NULL finden, welche seit 'ner Stunde aufgetaucht ist. (vorher ging es)
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (18. Jan 2015 um 17:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#26

AW: Firebird Embedded + AUTOINC

  Alt 18. Jan 2015, 18:23
Abgesehen davon liegt die Wahl der Datenbank ja auch nicht immer in der Hand des Entwicklers.
So ist das!
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#27

AW: Firebird Embedded + AUTOINC

  Alt 18. Jan 2015, 18:31
Sortiert das eigentlich auch neue Datensätze?
Aber sicher doch. Wenn ich einen neuen Datensatz einfüge, steht der immer gleich an der richtigen Stelle, wenn in der Query-Komponente IndexFieldNames mit einem oder mehreren gültigen Feldnamen gesetzt ist. Das ist doch Sinn und Zweck dieses Propertys, z.B.:

FireDac: Mit IndexFieldNames erstellen Sie Ad-hoc-Sortierreihenfolgen.

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.

Geändert von Perlsau (18. Jan 2015 um 18:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#28

AW: Firebird Embedded + AUTOINC

  Alt 18. Jan 2015, 19:06
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).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#29

AW: Firebird Embedded + AUTOINC

  Alt 18. Jan 2015, 20:27
Soooo, ich glaub nun geht erstmal alles wieder.

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.
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ß.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (18. Jan 2015 um 20:46 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#30

AW: Firebird Embedded + AUTOINC

  Alt 18. Jan 2015, 21:15
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    


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 11:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz