Форум: "Базы";
Поиск по всему сайту: 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.036 c
3-69654           Hiks                  2002-03-29 08:48  2002.04.22  
---|Ветка была без названия|---


1-69920           OrlovSergei           2002-04-09 11:32  2002.04.22  
Как сохранить нарисованное?


14-69974          lipskiy               2002-03-13 04:10  2002.04.22  
И когда это вы все всё успеваете?


3-69757           Awex                  2002-04-02 16:51  2002.04.22  
Пострелятационная Cache от InterSystem


1-69900           Jony                  2002-04-09 13:58  2002.04.22  
Навороченный выход из программы.