AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Stil-Frage zu TDataset und co
Thema durchsuchen
Ansicht
Themen-Optionen

Stil-Frage zu TDataset und co

Ein Thema von Marco Steinebach · begonnen am 17. Apr 2021 · letzter Beitrag vom 19. Apr 2021
Antwort Antwort
Marco Steinebach

Registriert seit: 4. Aug 2006
491 Beiträge
 
Delphi 5 Enterprise
 
#1

Stil-Frage zu TDataset und co

  Alt 17. Apr 2021, 21:11
Datenbank: Firebird • Version: 3 • Zugriff über: IBDAC
Hallo zusammen,
Da ich gerade an meinem ersten Projekt sitze, das vom guten alten Datei-Zugriff auf DB-Zugriffe umgestellt wird, hab ich mal ein paar Fragen zum guten Stil.

1. Zugriff auf Datenbank-Felder.

Es gibt ja, soweit ich weiß, 3 Möglichkeiten:
a)
Code:
edit1.text := q.fieldByName ('Nachname').asString;
Finde ich nicht so wirklich schön, alleine schon wegen des Risikos der falschen Schreibweisen der Feldnamen.

b)
Code:
const
  fnNachname = 'Nachname';
 ...
  edit1.text := q.fieldByName (fnNachname).asString;
oder
c)
Code:
const
  fnNachname = 3;
   ...
  edit1.text := q.fields[fnNachname].asString;
Eher b) oder c) - oder noch anders?

2. .asXXX
Die typumwandler asString, asInteger, ..., kann man ja nutzen, aber man muss nicht.
Ist es besser, die IMMER zu nehmen, oder wie seht ihr das?

3. Typen, die es in SQL nicht gibt.
Beispiel:
Code:
TFahrzeugtyp = (fPKW, fLKW, fMotorrad);
...
if TFahrzeugTyp (q.fieldByName ('Typ').asInteger) = fMotorrad then
Geht das irgendwie eleganter?

Herzliche Grüße
Wandogau
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

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

AW: Stil-Frage zu TDataset und co

  Alt 17. Apr 2021, 22:39
Zu 1) Jedes TDataSet hat im Kontextmenü einen Feldeditor mit dem man die Felder statisch erstellen kann. Dann hat man jeweils eine Komponente zum Feld, die man verwenden kann.

Zu 2) Wenn man die Antwort zu 1) umsetzt, kann man für jedes Feld das property Value nehmen, das dann vom entsprechenden Typ ist.

Zu 3) Einen Record-Helper zu der Enumeration, die den entsprechenden Feldeintrag setzt oder liest. Das kann ein Integer oder der String des Enumeration-Werts sein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Stil-Frage zu TDataset und co

  Alt 19. Apr 2021, 06:30
Zu 1) Jedes TDataSet hat im Kontextmenü einen Feldeditor mit dem man die Felder statisch erstellen kann. Dann hat man jeweils eine Komponente zum Feld, die man verwenden kann.
Mit allen Konsequenzen, die persistente Felder nach sich ziehen. Ich mache das schon ewig nicht mehr. Wenn man dann noch TDBGrid o.ä. verwendet und dort ebenfalls den Feld-Editor verwendet, kann es schwierig werden. In welchem Feld-Editor muss man die Korrekturen vornehmen, wenn etwas nicht so funktioniert, wie man es erwartet? Bei Programmierung im Team, kann es dann schon eine ziemliche Sucherei werden. Mal abgesehen davon, dass die Suchfunktion im Editor die Sachen im Feld-Editor nicht finden kann.
Bei uns im Team sind persistente Felder jedenfalls ein NoGo.

Zu 2) Wenn man die Antwort zu 1) umsetzt, kann man für jedes Feld das property Value nehmen, das dann vom entsprechenden Typ ist.
Da man bei einer Zuweisung dennoch wissen muss, welcher Typ dahinter steht, halte ich das nicht wirklich für einen Vorteil. Dann sehe ich im Source lieber gleich, welcher Typ das ist, wenn ich As... verwende.

Wenn ich mit vielen Feldnamen im Source arbeiten muss, gibt es eine spezielle Unit, die alle notwendigen Feldnamen als Konstanten enthält. Vertippen gibt es dann nicht mehr.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

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

AW: Stil-Frage zu TDataset und co

  Alt 19. Apr 2021, 08:16
Die neueren Delphi-Versionen zusammen mit FireDAC machen das aber schon deutlich einfacher. Längen von String-Feldern werden angepasst, andere (z.B. neue) Felder lassen sich zu den statischen dazu nehmen. Man muss diese Möglichkeiten halt nur nutzen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.824 Beiträge
 
Delphi 12 Athens
 
#5

AW: Stil-Frage zu TDataset und co

  Alt 19. Apr 2021, 21:18
Wenn die Version des OP noch stimmt ist er noch auf D5!
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:08 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