AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TDFTable erkennt AutoInc Felder nicht
Thema durchsuchen
Ansicht
Themen-Optionen

TDFTable erkennt AutoInc Felder nicht

Ein Thema von Sinspin · begonnen am 9. Feb 2021 · letzter Beitrag vom 10. Feb 2021
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
614 Beiträge
 
Delphi 10.3 Rio
 
#1

TDFTable erkennt AutoInc Felder nicht

  Alt 9. Feb 2021, 16:56
Datenbank: ADS • Version: ADS11.10 • Zugriff über: FireDAC
Hallo,

ich ziehe gerade in mein größtes Projekt (500K LOC) FireDAC als Zwischenschicht zum Zugriff auf die DB ein.
Bisher war es Advantage Database Server im Direktzugriff, jetzt via FireDAC.

Nun ist mir etwas sehr merkwürdiges aufgefallen.
Mit TFDQuery wird mir beim öffnen einer Tabelle ein enthaltenes AutoInc Feld korrekt als TFDAutoIncField erzeugt.
Mache ich das gleiche mit TFDTable kommt TIntegerField bei raus.

Führe ich ein Insert aus, wird mir via Query correkt ein neuer Record erzeugt, nach Post stehe ich auch drauf.
Bei der Tabelle geht es in die Hose, mir wird jedesmal der erste Datensatz in der Tabelle überschrieben und geliefert.

Was ich beim besten Willen nicht verstehe, warum TFDQuery es hinbekommt, TFDTable nicht.
Connection und Tabellen sind unverändert. Nur halt Connection auf ADS driver.

Woran kann das liegen?

Ich verwende Delphi 10.3 Update 3, wohl dann auch FireDAC in der Version. ADS ist 11.10.0.24.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: TDFTable erkennt AutoInc Felder nicht

  Alt 9. Feb 2021, 17:14
Ist in FetchOptions.Items das fiMeta gesetzt?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
614 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: TDFTable erkennt AutoInc Felder nicht

  Alt 9. Feb 2021, 17:38
Jawoll, fiMeta ist gesetzt. Das hatte ich auch schon gefunden.

Hier mal die DFM Auszüge aus meinem Test. Da würde man alle Änderungen sehen die ich an den Komponenten gemacht habe.
Und man kann sehen was die Komponenten an Feld info erzeugt haben.
Code:
object Query: TFDQuery
  Active = False
  Connection = TestConnection
  SQL.Strings = (
    'Select * from contacts')
  Left = 287
  Top = 578
  object QueryID: TFDAutoIncField
    FieldName = 'ID'
    Origin = 'ID'
    ProviderFlags = [pfInWhere, pfInKey]
    ReadOnly = True
  end
end
object Table: TFDTable
  Active = False
  Connection = TestConnection
  UpdateOptions.UpdateTableName = 'Contacts'
  TableName = 'Contacts'
  Left = 335
  Top = 578
  object TableID: TIntegerField
    FieldName = 'ID'
    Origin = 'ID'
  end
end
Für alle anderen felder werden die gleichen FeldTypen erzeugt.
Allerdings werden bei TFDTable für keines der Felder "ProviderFlags" geliefert.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TDFTable erkennt AutoInc Felder nicht

  Alt 9. Feb 2021, 17:59
Da ist doch bereits ein TIntegerField (FieldName "ID") eingebaut.

Lösche das mal. (ich denke die FDTable wird den Field-Typ nicht eigenständig böswillig ändern wollen)
Oder ändere dessen Typ zu TFDAutoIncField (in der DFM. in der PAS könnteste das auch machen, aber beim Speichern bietet dir Delphi eh an den Typ anhand der DFM zu ändern)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Feb 2021 um 18:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
614 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: TDFTable erkennt AutoInc Felder nicht

  Alt 9. Feb 2021, 18:12
Genau. Das Integer Feld wurde so erzeugt als ich Felder abgerufen habe. Für die Query das erwartete TFDAutoIncField. Für die Tabelle eben nicht.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
RSF

Registriert seit: 13. Mär 2008
150 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: TDFTable erkennt AutoInc Felder nicht

  Alt 9. Feb 2021, 20:11
Ich denke mal FireDAC hat nicht den vollständigen Funktionsumfang für ADS als die
originalen ADS Komponenten. Den schließlich sind ADS Datenbanken eigentlich tot.
Das wird zwar die Frage nicht beantworten
aber erklärt vielleicht warum FireDAC für ADS nicht vollkommen ist.
Ronald
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
614 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: TDFTable erkennt AutoInc Felder nicht

  Alt 10. Feb 2021, 06:24
Wie kommst du darauf?
Wenn Emba Geld für ein Produkt nimmt (und nicht gerade wenig) dann sollte das auch zu 100% funktionieren.
Und, solange ein Produkt verkauft wird halte ich es auch nicht für tot.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
RSF

Registriert seit: 13. Mär 2008
150 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: TDFTable erkennt AutoInc Felder nicht

  Alt 10. Feb 2021, 07:23
Wie kommst du darauf?
Wenn Emba Geld für ein Produkt nimmt (und nicht gerade wenig) dann sollte das auch zu 100% funktionieren.
Und, solange ein Produkt verkauft wird halte ich es auch nicht für tot.
Erstens verkauft EMBA keine ADS Datenbanken.
Zweitens siehe hier:https://www.delphipraxis.net/191721-...twicklung.html

Mit besten Grüßen
Ronald
Ronald
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: TDFTable erkennt AutoInc Felder nicht

  Alt 10. Feb 2021, 08:23
Was ich beim besten Willen nicht verstehe, warum TFDQuery es hinbekommt, TFDTable nicht.
Wenn niemand hier eine Erklärung hat (und ADS ist tot gilt nicht), wäre vielleicht ein QP-Eintrag hilfreich.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
RSF

Registriert seit: 13. Mär 2008
150 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: TDFTable erkennt AutoInc Felder nicht

  Alt 10. Feb 2021, 08:50
Ich glaube nicht das noch jemand eine Korrektur/Erweiterung an Komponenten (FireDAC) für eine veraltete Datenbank (ADS) vornimmt.
Aber die Hoffnung stirbt zuletzt.
Ich hatte viele Jahre mit ADS gearbeitet. Alle Projekte wurden bei mir auf eine noch „lebende“ DB umgestellt.
Ich hatte einige Gespräche mit meinen Ansprechpartnern bei SAP.
Warum verwendet er nicht einfach die Originalen Komponenten Bibliothek von ADS?
Ronald

Geändert von RSF (10. Feb 2021 um 09:12 Uhr) Grund: Korrektur
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:36 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