Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL ANweisung liefert leere Datenmenge (https://www.delphipraxis.net/130098-sql-anweisung-liefert-leere-datenmenge.html)

Moony 4. Mär 2009 12:26

Re: SQL ANweisung liefert leere Datenmenge
 
Welche Parameter?

ULIK 4. Mär 2009 12:32

Re: SQL ANweisung liefert leere Datenmenge
 
Zitat:

Zitat von Moony
Welche Parameter?

Sag mal, kann es sein, daß Du mit Datenbanken noch nicht viel gemacht hast? Dann würd ich sagen, schau Dir erst mal ein DB-Tutorial an.
Parameter: Du sollst die Werte der Felder als Parameter in die Query einfügen
DB: Ja was denn nun, Access oder Filemaker? :gruebel:

Grüße,
Uli

Bentissimo 4. Mär 2009 12:58

Re: SQL ANweisung liefert leere Datenmenge
 
Hallo zusammen,

also ich finde die Variante eines dynamischen SQL-Strings nicht schlecht. Manchmal ist die Verwendung sogar unumgänglich. Man denke z.B. nur an die Existenz von ExecuteImmediate in Oracle für genau solche Fälle.

Allerdings sind als String übergebene Datumsfelder immer zumindest verdächtig. Selbst wenn es am Ende tatsächlich mit mehreren Datenbanken klappen sollte, kann u.U. eine andere Spracheinstellung auf einem anderen DB-Server oder sogar nur eine andere Landeseinstellung des Rechners das gesamte Kartenhaus zum Einsturz bringen.

Die Fehlersuche in einem anscheinend sauber laufenden Programm, das aber in einer anderen Umgebung plötzlich und unerwartet aussteigt, kann einen buchstäblich in den Wahnsinnn treiben.

Also würde ich vorschlagen, Du nimmst Dir den Rat von ULIK zu Herzen. Falls das aber aus irgendeinem Grunde nicht möglich sein sollte, ist äußerste Sorgfalt beim Erstellen des SQL-Statements vonnöten.

Ich kenne FileMaker zwar nur dem Namen nach, aber dass es dort keine Möglichkeit geben soll, seine SQL-Statements zu testen kann ich gar nicht glauben. Ein adäquates Tool für diesen Zweck würde ich in jedem Fall auch empfehlen. Ich bin auch ziemlich sicher, dass Du damit dem Problem relativ schnell auf die Schliche kommen wirst.

Viel Glück!

Gruß,
Stephan

Bernhard Geyer 4. Mär 2009 13:03

Re: SQL ANweisung liefert leere Datenmenge
 
Zitat:

Zitat von Bentissimo
also ich finde die Variante eines dynamischen SQL-Strings nicht schlecht. Manchmal ist die Verwendung sogar unumgänglich.

Für diesen fall aber nicht! Man kann auch dynamische SQL-Strings mit Parametern aufbauen!

borwin 4. Mär 2009 13:11

Re: SQL ANweisung liefert leere Datenmenge
 
SQL-Code:
CM_Sign=''
wenn im Feld ein NULL steht wirst Du nichts finden oder Du schreibst
SQL-Code:
CM_Sign IS NULL
Zerflücke Deinen SQL-String und teste Stück für Stück.
Datum und Zeit sind auch immer bekannte Fehler.
SQL-Code:
Geburtsdatum='24.08.1975'
Access will hier ein # vor und nach dem Datum, wenn Du es direkt zur
Datenbank durchreichst. Eine Fehlermeldung kommt bei Deiner Schreibweise nicht, findet aber auch keinen Datensatz.

Gruß Hartmuth

Moony 4. Mär 2009 13:20

Re: SQL ANweisung liefert leere Datenmenge
 
Welche Datenbank das jetzt ist, ist irrelevant, wichtig ist erstmal dass es grundsätzlich funktiert. Anschließend soll es für unterschiedliche funktionieren!

Ich habe schon mehrfach mit Datenbanken gearbeitet, aber mit Parameter bzw. variablen Paramtern noch nicht.

Ich werde versuchen nach Datentyp zu erfragen und dann die richtigen Werte zu setzen. Andererseits bei einem leeren Inhalt nach NULL ebenfalls zu überprüfen.

Bernhard Geyer 4. Mär 2009 13:22

Re: SQL ANweisung liefert leere Datenmenge
 
Zitat:

Zitat von Moony
Welche Datenbank das jetzt ist, ist irrelevant, wichtig ist erstmal dass es grundsätzlich funktiert. Anschließend soll es für unterschiedliche funktionieren!

Viel Spaß damit das sich jedes DBMS etwas anders damit. Wenn eine Abfrage bei einer DB funktioniert heißt es nicht das sie bei einer anderen Funktioniert. Und ohne Verwendung von parametrisierten Abfragen noch viel weniger.

WoGe 4. Mär 2009 13:24

Re: SQL ANweisung liefert leere Datenmenge
 
Zitat:

Zitat von Moony
SQL-Code:
SELECT COUNT(*) FROM Stammdaten WHERE CM_REC_NO='3' ....

Wenn ich Moony's ursprüngliche Frage richtig verstehe will er doch nur wissen ob sein Datensatz unverändert existiert.
Sollte das Feld CM_REC_NO ein PK sein, ist es doch sinnvoller die Be(Aus)wertung die er machen möchte in der Funktion selber durchzuführen.
Das hätte auch den Vorteil, dass sämtliche Inhalte in dem Format vorliegen die er eh schon hat und zusätzlich kann er einzelne Felder darauf untersuchen ob er sie ändern darf.

deswegen würde sich folgendes anbieten
SQL-Code:
 SELECT * FROM Stammdaten WHERE CM_REC_NO= :AlteRecNo
Gruss
wo

Moony 4. Mär 2009 13:29

Re: SQL ANweisung liefert leere Datenmenge
 
@Bernhard:
Ich weiß dass es zwischen den DBMS Unterschiede gibt. Wie soll ich das denn deiner Menung nach parametrisieren? Ich weiß nicht wie das geht. Hatte ich aber schon erwähnt...

@Woge:
Prinziell könnte man das auch so machen. Was ist wenn ich das Indexfeld nicht kenne? Oder schlimmer es gibt kein Indexfeld?

WoGe 4. Mär 2009 13:55

Re: SQL ANweisung liefert leere Datenmenge
 
Hat die Tabelle einen PK reicht es völlig alle PK relevanten Felder abzufragen.
Hat sie keinen: Ist ein Konstruktionsfehler....

Das gilt eigentlich auch für das nichtvorhandensein eines ID-Feldes :wink:

gruss
wo


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.
Seite 3 von 4     123 4      

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