Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.22;
Скачать: 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 вся ветка

Текущий архив: 2002.04.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
1-69888
panoff
2002-04-09 11:53
2002.04.22
Юзер создаёт кол-во строк в MENUItem


1-69807
NiaSoft
2002-04-08 22:49
2002.04.22
Как получить снимок с экрана, включая режим Direct и т.п.


7-70051
Asker
2001-10-02 07:09
2002.04.22
Autorun


14-70004
Polevi
2002-03-13 18:06
2002.04.22
анекдот


6-69947
hair_fly
2002-02-11 12:55
2002.04.22
Подскажите, плз, сколько портов приемлемо использовать в одной проге ?