Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Вниз

Нельзя сохранить из дельф больше чем 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;




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.03 c
3-69746           vasilly               2002-04-01 08:43  2002.04.22  
Нельзя сохранить из дельф больше чем 256 символов в MS SQL!!!


3-69761           Roman_Tutov           2002-04-01 14:46  2002.04.22  
Общий вопрос


1-69798           Zombie                2002-04-10 15:04  2002.04.22  
Как увидеть const array в другом юните???


7-70047           Tsatur Soft           2002-01-24 23:05  2002.04.22  
Шрифт


14-69976          False_Delirium        2002-03-12 10:07  2002.04.22  
Microsoft не перестаёт удивлять..:)...