AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken ADO Fehler nach Selct-anweisung
Thema durchsuchen
Ansicht
Themen-Optionen

ADO Fehler nach Selct-anweisung

Ein Thema von Luckner · begonnen am 7. Nov 2013 · letzter Beitrag vom 8. Nov 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#1

AW: ADO Fehler nach Selct-anweisung

  Alt 7. Nov 2013, 16:31
Das ist übrigens der Grund weshalb man ein Feld niemals "Art-Nr" nennen sollte.
Der Bindestrich wird von der SQL Engine als Minuszeicen erkannt sollte innerhalb eines Feld- oder Tabellennamens nicht verwendet werden.
Ganz einfache Regel:
alles was Delphi/Pascal verboten ist sollte man auch nicht in Datenbanken verwenden:
Delphi-Quellcode:
var
  Art-Nr : string; // verboten
  Art_Nr : string; // ok
  R&D : string; // verboten
  24stunden:Boolean; // verboten, beginnt mit Ziffer
  Möhre: double; // verboten, Umlaut
Das Quoten der Feld-/Tabellennamen ist keine dauerhafte Lösung, denn irgendwann kommt ein Tool das nicht quoted und schon sind die Probleme wieder da.
fork me on Github
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: ADO Fehler nach Selct-anweisung

  Alt 7. Nov 2013, 18:31
Das Quoten der Feld-/Tabellennamen ist keine dauerhafte Lösung, denn irgendwann kommt ein Tool das nicht quoted und schon sind die Probleme wieder da.
Mag schon sein, nur ist ein Tool, das nicht quoted 'a waste of hd space'. Das ist ja sogar ANSI SQL, denn ohne 'quoten' wären auch Feldnamen wie 'select', 'user', 'database' usw. (also alle reservierten Wörter) für dieses Tool verboten.

Ich habe kein Problem damit, eine View zu erstellen, die lesbare Tabellenüberschriften als Spaltennamen enthält. Dann muss man sich im Report-Designer wenigstens keine Überschriften ausdenken.
Code:
select [Art-Nr],
       [R&D]
  from [Komische Tabelle]
Ist nicht nur perfektes SQL, sondern muss auch von jedem 'Tool', das über das Frickelstadium hinaus geht, bedient werden können. Ein Tool, was das nicht kann, bastelt sich irgendwelche SQL-Befehle selbst zusammen und wer so etwas so blöd macht, der hat bestimmt auch noch nie was von SQL-Injection gehört. Also: Finger weg von so einem Tool.

Allerdings schadet es nicht, die Feldnamen der Tabellen so zu gestalten, das sie ein 1:1 Äquivalent in der Programmiersprache der Wahl haben, denn es ist nun einem wesentlich übersichtlicher, wenn das ORM-Pendant einer Tabelle, nämlich der Klassenname und die Properties, exakt die gleiche Schreibweise aufweisen wie Tabelle und Felder.

Tabelle: 'Person' => Klasse 'TPerson'. Feldname: 'Vorname' => Property 'Vorname'. Einfacher und klarer geht's ja wohl kaum.

Wenn man schon OT über Feldnamen philosophiert, dann doch imho so: Bitte bitte keine blöden Abkürzungen. 'VORN,NACHN' ist totaler Cretinismus, wenn man auch 'Vorname, Nachname' verwenden kann. Wie oft ich diesen hirnverbrannten Schwachsinn in Datenbanken schon gesehen habe, erschüttert meinen Glauben an die Menschheit. Getoppt wird das nur noch durch die Verwendung der ungarischen Notation, also dem Voranstellen des Feldtypen und dem stringenten durchziehen der Maxime, das nur exakt 6 Buchstaben lange Feldnamen gute Feldnamen sind.

Einige SAP-Entwickler sind übrigens auch Kandidaten für Teeren-und-Federn aufgrund krankhafter Feldnamenverschlüsselung.

So. Feierabend. Hatte heute übrigens einen schöööönen Tag. Nun ratet mal, womit ich mich rumschlagen durfte
  Mit Zitat antworten Zitat
Alt 7. Nov 2013, 18:37     Erstellt von Smut
Dieser Beitrag wurde von TBx gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: ADO Fehler nach Selct-anweisung

  Alt 7. Nov 2013, 18:56
Nun ratet mal, womit ich mich rumschlagen durfte
Mit dem eigenen Ego?
Nein, daran habe ich mich gewöhnt. Wir kennen uns schon ein Weilchen, musst Du wissen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: ADO Fehler nach Selct-anweisung

  Alt 8. Nov 2013, 12:32
Wenn ich Firebird und IBDAC benutze muss ich aber nicht unbedingt 'Name' für den in der DB zusammengesetzten 'gesamten Namen' benutzen, oder?
Klar bekomme ich das auch zum Laufen, macht aber viel mehr Arbeit, als wenn ich gleich was gescheites nehme.
Und was wäre "was Gescheites?"
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: ADO Fehler nach Selct-anweisung

  Alt 7. Nov 2013, 18:50
Nun ratet mal, womit ich mich rumschlagen durfte
Mit dem eigenen Ego?
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 sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

AW: ADO Fehler nach Selct-anweisung

  Alt 8. Nov 2013, 11:52
Das ist ja sogar ANSI SQL, denn ohne 'quoten' wären auch Feldnamen wie 'select', 'user', 'database' usw. (also alle reservierten Wörter) für dieses Tool verboten.
Das sind kleine tickende Zeitbomben die dann hochgehen wenn man's nicht erwartet.
Datenbanken versch. Hersteller verwenden ja nicht mal einheitliche Quotezeichen ("" oder [] oder ´´).

Kleines Beispiel: man hat eine komplexe Abfrage mit 5+ Tabellen und irgendwo hat man versehentlich das quoten eines Feldnamens vergessen. Jede Wette dass man eine völlig unverständliche SQL Fehlermeldung bekommt und zunächst nicht versteht was eigentlich das Problem ist. Oder man verwendet ein reserviertes Wort; es kann Tage dauern bis man den Fehler gefunden hat.

Hier ist eine Vermeidungsstrategie angesagt.
Defensives Programmieren zahlt sich langfristig aus.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: ADO Fehler nach Selct-anweisung

  Alt 8. Nov 2013, 12:26
Ihr dürft nicht vergessen, daß es hier um Access geht. Da ist einiges anders als bei anderen Datenbanken. Meistens ist [Tabelle].[Feld] richtig.
Manchmal muß es aber auch [Eigentümer].[Tabelle].[Feld] sein, und machmal reicht ein Tabelle.Feld der nackte Feldbezeichner hat bei mir allerdings noch nie geklappt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.224 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: ADO Fehler nach Selct-anweisung

  Alt 8. Nov 2013, 12:29
Ihr dürft nicht vergessen, daß es hier um Access geht.
Der ist gut, weil er auch stimmt. Von mir ein +1

Bei Access ist auch der zugriffsweg (BDE/ADO direkt/ODBC/direkt in Access...) relevant. Je nach Weg versteht Access manche Befehle nicht mehr.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: ADO Fehler nach Selct-anweisung

  Alt 8. Nov 2013, 13:06
Bei Access ist auch der zugriffsweg (BDE/ADO direkt/ODBC/direkt in Access...) relevant. Je nach Weg versteht Access manche Befehle nicht mehr.
Und ich hab mich immer gewundert....

Schade, daß Kreuzigungen nicht mehr so richtig in sind!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 14:54 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