AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Probleme mit Delphi, ADO und Oracle
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Delphi, ADO und Oracle

Ein Thema von greenmile · begonnen am 30. Jan 2007 · letzter Beitrag vom 31. Jan 2007
Antwort Antwort
Seite 2 von 2     12   
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#11

Re: Probleme mit Delphi, ADO und Oracle

  Alt 30. Jan 2007, 16:01
Zitat von rwachtel:
Aber wo ist denn das eigentliche Problem? Ich kann doch - wenn ich denn unbedingt mit Feldpersistenz arbeiten will - auch ein TBCDField z.B. an eine DBCheckbox binden.
Wenn ich "EnableBCD" aktiviere/deaktiviere, bekomme ich aber immer die Fehlermeldung "Integer erwartet, aber BCD gefunden". Bzw gleiches für "Boolean erwartet, aber ..."
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#12

Re: Probleme mit Delphi, ADO und Oracle

  Alt 30. Jan 2007, 16:16
Das war nur ein Beispiel - Du kannst auch z.B. ein TFloatField nehmen und dieses z.B. an eine DBCheckBox binden.
Robert Wachtel
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#13

Re: Probleme mit Delphi, ADO und Oracle

  Alt 30. Jan 2007, 16:20
Das kann sein, ich komme aber schon nicht über die Fehlermeldung des Feld-Designers (bzw beim öffnen mit definierten Feldern) hinaus. "Integer erwartet, aber BCD gefunden". Bzw gleiches für "Boolean erwartet, aber ..."
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#14

Re: Probleme mit Delphi, ADO und Oracle

  Alt 30. Jan 2007, 16:25
Dass Du beim Wechseln der Datenbank die persistenten Felder komplett neu erstellen musst, ist aber schon klar, oder?

Das ist halt auch der Grund, warum die integrierte Feldpersistenz keine kluge Wahl spätestens bei Unterstützung alternativer Datenbanken darstellt (das Problem existiert ja nicht nur bei einem Wechsel von MS SQL zu Oracle). Aber das hat Dir Marian in der Newsgroup ja auch schon dargelegt.
Robert Wachtel
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#15

Re: Probleme mit Delphi, ADO und Oracle

  Alt 30. Jan 2007, 16:32
Das stimme ich Dir zum Teil zu, Feldpersistenz hat aber durchaus seine Vorteile; wenn man nicht gerade zu Oracle wechselt, die nicht mal AutoInc Felder haben Ich werde mal versuchen, die problematischen Felder in TVariantField abzuändern. Mal schauen was dann passiert. Ich muß ca 200 Dialoge, die teilweise sehr komplex sind und intensiv Feldpersistenz nutzen, übersetzen. Und das in 1 Monat, dann muß eine Beta laufen ...
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#16

Re: Probleme mit Delphi, ADO und Oracle

  Alt 30. Jan 2007, 16:45
Zitat von greenmile:
[...] Feldpersistenz hat aber durchaus seine Vorteile [...]
Welche denn, die nicht im Code realisiert werden könnten (sprich z.B. die manuelle Erzeugung persistenter Tabellenfelder abhängig von der eingesetzten Datenbank)?

Zitat:
Ich werde mal versuchen, die problematischen Felder in TVariantField abzuändern. Mal schauen was dann passiert.
Viel Glück. Lass mal hören, was das gibt.

Zitat:
Ich muß ca 200 Dialoge, die teilweise sehr komplex sind und intensiv Feldpersistenz nutzen, übersetzen. Und das in 1 Monat, dann muß eine Beta laufen ...
Brauchst Du Unterstützung?

Für die Zukunft schonmal über eine Middle-Tier-Lösung nachgedacht? Ich denke da z.B. an RemObjects' DataAbstract, mit dem ich schon sehr gute Erfahrungen machen konnte (allerdings mit Delphi 2006).
Robert Wachtel
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#17

Re: Probleme mit Delphi, ADO und Oracle

  Alt 30. Jan 2007, 16:56
Zitat von greenmile:
Das stimme ich Dir zum Teil zu, Feldpersistenz hat aber durchaus seine Vorteile; wenn man nicht gerade zu Oracle wechselt, die nicht mal AutoInc Felder haben
Du hast mit MSSQL ja auch eine Grundlage. die glücklicherweise nicht als der Normalfall betrachtet werden kann.
AutoInc gibt es nur in DBMS', die keine Trigger unterstütz(t)en, wie mySQL, oder die eher als serverseitiges MS Access durchgehen, wie MSSQL.
Falls du irgendwann auch noch andere DBMS (wie Firebird) unterstützen willst, würde ich hingehen und deine Boolean zu numerischen Feldern ändern.
TVariantField it so ziemlich das übelste was es gibt, da Variant nicht mehr Kompatibilität bietet, es knallt einfach nur zur Laufzeit.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#18

Re: Probleme mit Delphi, ADO und Oracle

  Alt 30. Jan 2007, 17:16
MSSQL als serverseitiges Access zu betrachten ... Nun ja, Ansichtssache. MS SQL hat in einigen Dingen die Nase ganz schön vorn, angefangen beim Kompfort, den Oracle schlichtweg nicht mitbringt. Ein Import-/Export Assistent, von dem Oracle träumt. Und AutoInc Felder sind schnell definiert, mehr möchte ich auch gar nicht; wieso sollte ich erst 2, 3 Statements losschicken, nur um etwas so profanes wie AutoInc Felder zu bekommen? Aber wie gesagt ... Ansichtssache

Die AutoInc/Bool'schen Felder sind leider nicht mein einziges Problem; Integer kommt noch dazu. Wobei alles letztendlich Zahlen sind, also Numeric. Kann ich im Oracle irgendwo definieren, dass ein Integer = ein Delphi Integer ist, also 32 bittig? Ich tippe mal darauf als Problem. Wir können ja schlecht die einzigen sein, die Delphi 5 > ADO > Oracle mit Feldpersistenz einsetzen. Zumal es ja nicht an ADO liegt, habe ja schon SQLDirect getestet und hatte selbiges Problem. Bleibt nur noch Delphi / Oracle Client / Oracle Server als mögliche Ursache.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#19

Re: Probleme mit Delphi, ADO und Oracle

  Alt 30. Jan 2007, 17:29
Dein Problem sind offensichtlich die persistenten Felder!!
Leider gibt es normalerweise nur die Möglichkeit (pro Tabelle/Query) auf die persistenten Felder ganz zu verzichten
oder nur mit den persistenten Feldern zu arbeiten.
Ohne persistente Felder hättest du jetzt kein Problem mit Oracle.

Wäre es nicht toll, wenn es einen Zwischenweg geben würde?
Also die Felder werden aus der darunterliegenden Abfrage/Tabelle erzeugt und danach werden
gewisse Properties (EditFormat, EditMask, ReadOnly, Visible,...) geändert.
Leider wurde dies von Borland so nicht designed, aber man kann sich behelfen, wenn man im Event AfterOpen eingreift:
Delphi-Quellcode:
procedure TForm1.Table4711AfterOpen(dataset:TDataset);
begin
   dataset.FieldByName('PKey').Visible := False;
   dataset.FieldByName('Feld42').ReadOnly := True;
...
end;
Mit etwas Gehirnschmalz kann man das Ganze so automatisieren, dass die Schreibarbeit deutlich reduziert wird.
Andreas
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#20

Re: Probleme mit Delphi, ADO und Oracle

  Alt 31. Jan 2007, 16:36
Zum aktuellen Stand der Dinge: Es sind irgendwie alle Schuld

- AutoInc
Ich habe mittels "Suchen/Ersetzen" in allen PAS und DFM alle Vorkommen von TAutoInc gegen TVariant bzw TInteger bzw TFloat ausgetauscht, damit ist dieses Problem behoben (TVariant bietet sich an, damit es mit SQL-Server weiter läuft).

- Boolean
Der Oracle Migrationsassistent setzt für Bool'sche Werte einfach NUMBER(1) ein, was Delphi bzw Access nicht korrekt erkennt. Wird der Datentyp gegen CHAR(1) getauscht, funktioniert es. Ich wechsele nun den Migrationsassistent. Falls jemand einen guten (für Geld) kennt ... Alternativ wäre auch interessant ob man Delphi "sagen" kann, dass es NUMBER=0 als False bzw NUMBER=1 als True erkennt. Ich habe keinen Weg gefunden. Ev DB.PAS modifizieren? Ich brauche Bool'sche Werte, damit ich mit ".AsBoolean" arbeiten kann.

- Integer
Delphi 7 erkennt Integer, nur Delphi 5 erkennt Float. Warum? Ich denke mal, hier müssen Änderungen in der DB.PAS vorgenommen werden. Falls jemand eine Idee hat ...


[quote="shmia"]Dein Problem sind offensichtlich die persistenten Felder!!
Leider gibt es normalerweise nur die Möglichkeit (pro Tabelle/Query) auf die persistenten Felder ganz zu verzichten
oder nur mit den persistenten Feldern zu arbeiten.
Ohne persistente Felder hättest du jetzt kein Problem mit Oracle.[/delphi]

Jein. Im Prinzip gebe ich Dir Recht, allerdings würde ich dann über andere Probleme wie Boolean stolpern. Es sind einige Probleme ...

[quote="shmia"]Leider wurde dies von Borland so nicht designed, aber man kann sich behelfen, wenn man im Event AfterOpen eingreift[/delphi]

Stimmt, leider ist Delphi hier wenig flexibel. Brachial mit "Kann damit nicht umgehen" statt ein Ereignis auszulösen damit die Anwendung die Chance hat, den neuen Datentypen zu definieren, ist wirklich unschön.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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