![]() |
Datenbank: NexusDB • Version: 2 • Zugriff über: NexusDB Enterprise Manager
NexusDB Select eines Strings geht nicht
Hallo zusammen,
scheinbar bin ich einfach zu blöd, oder seh' den Wald vor Bäumen nicht. OK es ist meine erste Datenbank die ich (versuche) zu programmieren, aber so ganz unwissend bin ich trotzdem nicht. Also, nachdem ich NexusDB (embendded) installiert und via SQL auch eine Tabelle angelegt sowie einige Datensätze angelegt habe, versuche ich nun via SELECT darauf zuzugreifen, und scheitere. Und das selbst mit dem DBBrowser. Ich habe eine einfache Tabelle mit 2 Spalten angelegt:
Delphi-Quellcode:
Wenn ich nun folgenden SQL-Befehl via DBBrowser losschicke
SQL.Add('CREATE TABLE TREIHE (');
SQL.Add('TREIHEID AUTOINC NOT NULL PRIMARY KEY, '); SQL.Add('REIHE VARCHAR(16) );'); funktioniert alles so wie gewünscht: SELECT * FROM "TREIHE" Where TReiheID < 100; Versuch ich aber:
SQL-Code:
dann erhalte ich keine Datensätze zurück obwohl mehrere tausend
SELECT * FROM "TREIHE" Where Reihe = 'Classic';
dem Suchkriterium entsprechen. Was mach ich falsch? :gruebel: [edit=mkinzler]Diverse Tags eingefügt Mfg, mkinzler[/edit] |
Re: NexusDB Select eines Strings geht nicht
Steht da genau 'Classic' drin? Groß-/Kleinschreibung?
|
Re: NexusDB Select eines Strings geht nicht
Zitat:
Wenn die Spalten als Char und nicht als VarChar angelegt werden, werden die Werten hinten mit Leerzeichen aufgefüllt. |
Re: NexusDB Select eines Strings geht nicht
Ja, Groß/Kleinschreibung ist richtig, ich habe sogar den String per
Copy&Paste aus der Tabelle in die SQL-Abfrage kopiert. Leerzeichen denke ich sollen nicht drin sein, wobei ich Leerzeichen hinten auch damit ausgeschlossen habe indem ich in die Abfrage bis zu 16 Leerzeichen hinzugefügt habe. Das mit Char war sogar mein 1. Versuch. Aber auch dort funktionierte es nicht, selbst wenn ich in den Select Leerzeichen hinten anfügte. btw. Ich mach mit diesem Select nun schon ca. 4h rum, und hab' alles ausprobiert was mir eingefallen ist, bevor ich hier postete. Hier noch der Insert Befehl mit dem ich die Zeilen erstelle vielleicht ist ja dort noch ein Fehler, mit diesem String zusammensetzen in Delphi hab' ich es nicht so. Insbesondere wenn dort ' Zeichen mit drin vorkommen.
Delphi-Quellcode:
wobei _s sich aus einem Array of String ergibt:
SQL.Clear;
SQL.Add('INSERT INTO TREIHE '); SQL.Add('(REIHE)'); SQL.Add('VALUES ('''); SQL.Add(_s); SQL.Add(''');'); ExecSQL; CS_Reihe : array[TModellreihe] of string = ( '', '*****', 'Classic', 'Modern', 'Elegant', '*****' ); Und nur die 3 Einträge mit sinnvollem Inhalt in der DB gespeichert werden. [edit=mkinzler] Mfg, mkinzler[/edit] |
Re: NexusDB Select eines Strings geht nicht
Steht das jetzt alles in einem Feld? Was kommt denn bei einem
SQL-Code:
heraus? 3 Datensätze oder nur einer?
SELECT Reihe FROM TReihe
|
Re: NexusDB Select eines Strings geht nicht
Nein nein, da kommen fast 50.000 Einträge raus. In _s ist immer nur
einer der Strings drin. Und dieser wird direkt daraus kopiert.
Code:
Ich wollte damit nur zeigen das die Einträge in der DB konstante
pseudocode: _s:=CS_Reihe[TModellreihe(1)];
Strings sind (aus Delphi Sicht), und (unter Delphi) da nichts davor oder danach kommt (Leerzeichen, Tabulatoren, Zeilenendezeichen, usw.).
SQL-Code:
TREIHEID REIHE
Begin von SELECT * FROM TREIHE:
1 Elegant 2 Classic 3 Classic 4 Classic 5 Classic 6 Classic 7 Classic ... Das zeigt der DBBrowser ja auch alles richtig an. Da aber niemand sonst darüber berichtet das in NexusDB keine Selects funktionieren, denk ich das ich den Fehler mach, nur seh' ich nicht wo. [edit=mkinzler]Diverse Tags eingefügt Mfg, mkinzler[/edit] |
Re: NexusDB Select eines Strings geht nicht
Moment, ich dachte, TReihe ist eine Stammdatentabelle. Dann macht es aber keinen Sinn, dieselben Einträge mehrfach zu speichern.
|
Re: NexusDB Select eines Strings geht nicht
Es geht doch nichts über (richtiges) Vertändnis der Noramlisierung :zwinker:
|
Re: NexusDB Select eines Strings geht nicht
Hallo,
zeig doch mal deinen Delphi-Code rund um das Select. Heiko |
Re: NexusDB Select eines Strings geht nicht
1. Das soll meine Stamdatendatei werden, da soll später auch nur
für jede Zeile was anderes stehen, aktuell versuch ich erstmal überhaupt einen Select auszuführen. 2. Normalisieren, ist das was ich machen will, denn die Ausgangsdaten sind nichtmal in 1. Normalform. Aber gerade dafür brauch ich einen Select um herauszufinden ob der entsprechende Eintrag schon exsistiert. 3. Delphicode rund um den SELECT ist insoweit irrelevant, da der von mir verwendete SELECT Befehl schon im DBBrwoser von Nexus nicht funktioniert. Genau das ist ja mein aktuelles Problem. Das dann in Delphi auch hinzubekommen, das wäre dann der 2. Schritt. Was ich also nicht schafe ist das, was ich ganz zu anfang schon schrieb, im DBBrowser den Befehl
SQL-Code:
auszuführen und dabei auch ein ergebnis zu erhalten.
SELECT * FROM "TREIHE" Where Reihe = 'Classic'
Irgentwelche Ideen was man dabei beachten muss? [edit=mkinzler]SQL-Tag eingefügt Mfg, mkinzler[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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