![]() |
Datenbank: Firebird • Version: 2.0.3 • Zugriff über: ZEOS
[Firebird] TEXT Feld füllen?
Grüße,
ich expermentiere grad mit Firebird rum, um zu schauen, wie unsere Anwendung damit - statt Advantage - läuft. Klappt auch alles ganz gut soweit, nur habe ich mich grad mit einem Problem verstrickt, wo ich nicht so recht weiterkomme. Ich habe eine Tabelle mit einem TEXT/NCHAR Feld.
SQL-Code:
Wenn ich per Query nun einen Eintrag hinzufügen will...
CREATE TABLE Clients (
Id INTEGER NOT NULL, Title VARCHAR(64), LastName VARCHAR(128) NOT NULL, FirstName VARCHAR(128), Address NCHAR, UseBirthData SMALLINT, BirthDateTime TIMESTAMP, BirthPlace VARCHAR(128), BirthCountry VARCHAR(128), Gender SMALLINT, UseManualGeoData SMALLINT, Longitude FLOAT, Latitude FLOAT, Zone TIMESTAMP, DST TIMESTAMP, ImageFile VARCHAR(128), IsActive SMALLINT, PRIMARY KEY (Id) ); CREATE GENERATOR Clients_Id_Gen; CREATE INDEX ClientsOrdinary ON Clients (LastName);
SQL-Code:
... erhalte ich folgende Fehlermeldung:
INSERT INTO CLIENTS (TITLE, LASTNAME, FIRSTNAME, ADDRESS, USEBIRTHDATA, BIRTHDATETIME, BIRTHPLACE, BIRTHCOUNTRY, GENDER, USEMANUALGEODATA, LONGITUDE, LATITUDE, ZONE, DST, IMAGEFILE, ISACTIVE)
VALUES ('Herr', 'Mustermann', 'Max', 'Irgendnestrasse 12, 12345 Irgendwo', 0, NULL, NULL, NULL, 0, 0, 13.7777, 15.2, '12/30/1899 01:00:00', '12/30/1899 01:00:00', NULL, 1) Zitat:
Ist das TEXT/NCHAR-Feld nicht äquivalent mit dem MEMO-Typ? Wie kann ich da ein Textfeld abspeichern? Per BLOB? |
Re: [Firebird] TEXT Feld füllen?
Was ist ein NCHAR ? :shock: Memo (Delphi) = Textblob (Blob Subtype ???)
|
Re: [Firebird] TEXT Feld füllen?
Die Datenbankstruktur hab ich per ZDD (ZEOS Database Explorer) erstellt und mir ein Script generieren lassen. Bei der Erstellung konnte ich halt als "String"-Felder "VARCHAR" und "NCHAR" wählen. Wobei mir bei VARCHAR ein Feld "Length" angeboten wurde, bei NCHAR nicht (ausgegraut / deaktiviert). Daher ging ich einfach davon aus, dass NCHAR wohl MEMO entspricht. :gruebel:
[edit] Wenn ich dass Address-Feld in der CREATE-Query auf TEXT oder TEXTBLOB ändere, meckert er rum, dass er beides nicht kennt. Zitat:
|
Re: [Firebird] TEXT Feld füllen?
Hallo,
in Firebird/Interbase sollte für Text ein "Blob" mit "Subtype" verwendet werden.
SQL-Code:
...
Address blob sub_type text, ... Viele Grüsse Tom |
Re: [Firebird] TEXT Feld füllen?
Hi,
NCHARs - das sind doch VARCHARS mit einem "eingebauten" Characterset ISO8859-1, oder? Bei der NCHAR-Definition des Adressfelds fehlt die Längenangabe (synonym zu VARCHARs). Ich vermute mal, dass dann von Firebird automatisch die Länge 1 gesetzt wird. Für lange Texte wäre ein BLOB mit Subtype 1 (für Text) sicherlich die richtige Wahl. Das sähe dann ungefähr so aus (hier eine Domain, die ich verwende, wenn es um das Abspeichern von einfachen Textmemos unbestimmter Länge geht): CREATE DOMAIN TMEMO AS Blob sub_type 1; Allerdings haben Collate Orders auf Blobs keine Auswirkung, so dass das Sortieren schwierig wird. Greetings Udo "Kretabiker" Treichel |
Re: [Firebird] TEXT Feld füllen?
Ah, jetzt machts klick! :coder2:
Danke euch beiden. :) :cheers: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 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