AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi BLOB SUB_TYPE TEXT nimmt nicht mehr als 255 Zeichen
Thema durchsuchen
Ansicht
Themen-Optionen

BLOB SUB_TYPE TEXT nimmt nicht mehr als 255 Zeichen

Ein Thema von Jens Schumann · begonnen am 18. Jul 2006 · letzter Beitrag vom 19. Jul 2006
Antwort Antwort
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#1

BLOB SUB_TYPE TEXT nimmt nicht mehr als 255 Zeichen

  Alt 18. Jul 2006, 21:53
Datenbank: Firebird • Version: 1.5.2.4731 • Zugriff über: IBX
Hallo,
seit mehreren Jahren verwende ich erfolgreich folgende Domian:
CREATE DOMAIN "TTEXTBLOB" AS BLOB SUB_TYPE TEXT SEGMENT SIZE 80 CHARACTER SET ISO8859_1; Ebenfalls verwende ich seit mehreren Jahren sehr erfolgreich Excel als Tabellenpflegeprogramm.
D.h. ich editiere die Datensätze in einer Exceltabelle und tausche anschließend die komplette
Tabelle in der Datenbank aus. Da es sich um max 4.000 bis 5.000 Datensätze handelt ist das eigentlich
auch kein Problem.

Jetzt kommt's:
Wenn in einer Excelzelle mehr als 250 Zeichen stehen verwende ich als o.g. Domain.
Das klappt hervorragend.

Heute stellte sich heraus das in einer Tabelle folgende Domain nicht meher ausreicht.
CREATE DOMAIN "TSTRING250" AS VARCHAR(250) CHARACTER SET ISO8859_1 COLLATE DE_DE; Dehalb habe ich mit diesem Script aus dem Feld "FORMEL" ein TTextBlob gemacht:
SQL-Code:
ALTER TABLE PNK ADD FORMEL_TMP TSTRING250 COLLATE de_de;
UPDATE pnk SET FORMEL_TMP=FORMEL;
ALTER TABLE PNK DROP FORMEL;
ALTER TABLE PNK ADD FORMEL TTEXTBLOB;
UPDATE pnk SET FORMEL=FORMEL_TMP;
ALTER TABLE PNK DROP FORMEL_TMP;
COMMIT;
Dummerweise werden jetzt aber nur 255 in das Feld geschrieben (oder aus der Excelzelle gelesen).
Wenn ich das Feld manuell in der IBOConsole editiere werden mehr als 255 übernommen.

Es scheint also so zu sein, dass wenn ich das Feld in der Tabelle von Anfang an als TTextBlob anlege mehr
als 255 Zeichen aus der Excelzelle gelesen werden und wenn ich es mit o.g. Script erzeuge nur 255 Zeichen.

Kann das sein? Wenn ja - warum

Ein Backup / Restore hat nichts geändert.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: BLOB SUB_TYPE TEXT nimmt nicht mehr als 255 Zeichen

  Alt 18. Jul 2006, 21:54
Wie versuchst du das Einzufügen?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: BLOB SUB_TYPE TEXT nimmt nicht mehr als 255 Zeichen

  Alt 19. Jul 2006, 07:24
Zitat von mkinzler:
Wie versuchst du das Einzufügen?
INSERT INTO tabelle (FORMEL) VALUES (:F) :F ist der Parameter
I come from outer space to save the human race
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: BLOB SUB_TYPE TEXT nimmt nicht mehr als 255 Zeichen

  Alt 19. Jul 2006, 08:02
Hallo,

1. und wie sieht das zuweisen aus ?
ParamByXXX ?
da muss dann AsBlob stehen


2. Collate usw. hat bei Blobs nichts zu suchen.
Ist halt ein Binärteil, du könntest auch ein Bild eintragen an der
gleichen Stelle


Hier eine Funktion, die ich seit Jahren benutze.
- TjifQuery kann durch TQuery ersetzt werden
- DataBaseName muss natürlich geändert werden

{
name:
UpdateTextBlobField_Ex
usage:
update a blob field
parameter:
theTableName - table name
thePrimaryKeyName - name of the primary key
thePrimaryKeyValue - value of the primary key
theFieldName - field name of the blob field
theText - field value
return parameter:
theErrorStr - error message
return:
false on error
notes:
- additional to UpdateTextBlobField name of the
primary key is needed
}
function UpdateTextBlobField_Ex(const theTableName: String;
const thePrimaryKeyName: String; thePrimaryKeyValue: Integer;
const theFieldName: String; const theText: String;
var theErrorStr: String): Boolean;
var
FQuerySQL : TjifQuery;
begin
Result:= False;
theErrorStr:= S_internal_error;

try
FQuerySQL := CreatejifQuery;
try
with FQuerySQL do
begin
DataBaseName:= C_ALIASNAME;

SQL.Add('Update '+theTableName+' Set ');
SQL.Add(theFieldName+'=:'+theFieldName);
SQL.Add('Where '+thePrimaryKeyName+'=:Id');
ParamByName('Id').AsInteger:= thePrimaryKeyValue;
ParamByName(theFieldName).AsBlob:= theText;
ExecSQL;
end; { with FQuerySQL do }

Result:= True;
finally
FQuerySQL.Free;
end;
except
on E: Exception do theErrorStr:= E.message;
end;
end; { UpdateTextBlobField_Ex }


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: BLOB SUB_TYPE TEXT nimmt nicht mehr als 255 Zeichen

  Alt 19. Jul 2006, 08:55
Zitat von hoika:
1. und wie sieht das zuweisen aus ?
ParamByXXX ?
da muss dann AsBlob stehen
Muss nicht da es bei Felder, die von Anfang an Blob's sind funktioniert

Zitat von hoika:
2. Collate usw. hat bei Blobs nichts zu suchen.
Ist halt ein Binärteil, du könntest auch ein Bild eintragen an der
gleichen Stelle
Firebird unterscheidet zwei Typen von Blobfelder, binäre und Text (ich verwende explizit Text)
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#6

Re: BLOB SUB_TYPE TEXT nimmt nicht mehr als 255 Zeichen

  Alt 19. Jul 2006, 09:04
Klingt wie übliche göttliche Bestrafung dafür, dass man eine Tabellenkalkulationssoftware als DBMS-Ersatz missbraucht.
Solange du nicht bei Automationsserver raufgehst solltest du nicht mehr als 250 Zeichen aus einem Feld bekommen.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: BLOB SUB_TYPE TEXT nimmt nicht mehr als 255 Zeichen

  Alt 19. Jul 2006, 11:52
Zitat von Elvis:
Klingt wie übliche göttliche Bestrafung dafür, dass man eine Tabellenkalkulationssoftware als DBMS-Ersatz missbraucht.
Solange du nicht bei Automationsserver raufgehst solltest du nicht mehr als 250 Zeichen aus einem Feld bekommen.
Nein das kann es nicht sein. Bei Tabellen bei denen das Feld von Anfang an ein Text-Blob ist bekomme ich mehr als 255 Zeichen. Das ist ja das Mysterium.
I come from outer space to save the human race
  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 15:07 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