Вниз
Скачать: CL | DM;

Нельзя сохранить из дельф больше чем 256 символов в MS SQL!!!   Найти похожие ветки 

← →
vasilly ©   (2002-04-01 08:43) [0]

Есть задача: хранить в БД поля длина которых превышает 256 символов. Как это сделать??
Пробывал создавать на сервере varchar(1024) например, varbinary(1024).. это не помогает, приходят уже отсеченные данные и сохраняются в сервак!
Как вы думаете? Что делает написанная ниже процедура. Она сохраняет только 256 символов, а почему я никак не могу понять!
Единственное что я понял - что отсечение происходит в DataSet"е... Как с этим бороться...???
var Query: TQuery;
Str: PChar;
begin Str:=
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";
Query:= TQuery.Create( Application);
Query.DatabaseName:= "bd";
Query.SQL.Add("update Table1 set Marks=:Marks where ONum=13");
Query.ParamByName("Marks").SetBlobData( Str, 1024);
Query.Prepare;
Query.ExecSQL;
Query.Close;
Query.Free;
end;

Когда в "SQL Server query analyzer" выполняешь скрипт: SELECT cast(marks AS varchar(1024)) FROM Table1 WHERE ONum = 13
то он возвращает только 256 символов


← →
sniknik ©   (2002-04-01 08:54) [1]

а может и нет (в смысле не в DataSet"е). на форуме
http://www.sql.ru/cgi-bin/UltraBoard/UltraBoard.pl?Action=ShowBoard&Board=mssql&Idle=&Sort=&Order=&Session=
есть обсуждение подобной темы, а там они не используют DataSet да и Delphi тоже.


← →
vasilly ©   (2002-04-01 09:02) [2]

Вопрос все еще актуален!


← →
Lusha ©   (2002-04-01 09:19) [3]

Отсеченние происходит в SQL Link. Она не знает о новых типах MS SQL. Если Вы желаете, чтобы Ваше приложение корректно работало с новыми типами данных MS SQL Server, используйте для соединением с ним его родной ODBC драйвер.



← →
vasilly ©   (2002-04-01 09:21) [4]

так здорово... поточнее про родной драйвер можно?
+ от БДЕ отказаться нельзя


← →
Lusha ©   (2002-04-01 09:34) [5]

А и не надо отказываться. Соединитесь с сервером не через NATIVE драйвер, а через ODBC драйвер, входящий в поставку MS SQL Server.
Создаете DSN в секции ODBC Driver панели управления. И указываете этот DSN в качестве Alias в своей программе...


← →
Dimedrol ©   (2002-04-02 11:38) [6]

БДЕ к стати отлично подхватывает запись в ОДБЦ, как алиас
своей "родной" базы.
Сам так работаю.


← →
amamed_3071 ©   (2002-04-02 11:54) [7]

Если Соединенние через АДО то не будет проблем Если через ВДЕ то тип поля надо заменит на "Text"


← →
amamed_3071 ©   (2002-04-02 12:12) [8]

И проседуру напиши так
var str:String;

Begin
Str:=
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"+#10#13+
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
Query:= TQuery.Create( Application);
Query.DatabaseName:= "bd";
Query.SQL.Add("update Table1 set Marks="+str+" where ONum=13");
Query.Prepare;
Query.ExecSQL;
Query.Close;
Query.Free;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
1-69859
MCFire
2002-04-08 17:20
2002.04.22
Как закинуть меню в панель инструментов


14-69968
B@Nt
2002-03-11 11:45
2002.04.22
Где мона слить книгу по Базам?


1-69926
DMA
2002-04-09 20:06
2002.04.22
Как определить какое окно сейчас активное?


3-69677
tovSuhov
2002-03-29 14:36
2002.04.22
Люди, ну не оставляйте в беде...


1-69908
DeMoN-777
2002-04-09 03:52
2002.04.22
Добавление объекта на чужую форму




   Наверх