Форум: "Базы";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
ВнизКопирую из InterBase в MS SQL с фотографиями! Найти похожие ветки
← →
Jan1 (2007-04-04 13:58) [40]
> А при использовании ADO даёт ошибку.
и где она?
← →
DmitrichJ (2007-04-04 14:51) [41]Делаю запрос:
Form1.ADOQuery1.SQL.Text:="insert into table1 (np,name,d1,d2) values(0,"текст",:P1,:P2)";
Ошибка:
The name "текст" is not permitted in this context. Only constants, expression, or variables allowed here. Column names are not permitted.
name varchar(200)
← →
Jan1 (2007-04-04 15:09) [42]
> Form1.ADOQuery1.SQL.Text:="insert into table1 (np,name,d1,
> d2) values(0,"текст",:P1,:P2)";
вместо двойных кавычек надо использовать две одинарные. И если ты уж начал использовать параметры, то чего тут всдумал вдруг подругому?
ADOQuery1 - пережиток. юзай ADOCommand.
← →
DmitrichJ (2007-04-04 15:20) [43]Странно почему одинарные, и всё же добавляет, но такая же фигня с обрезанием картинок. Уже не знаю что делать=(
← →
Jan1 (2007-04-04 15:25) [44]
> Странно почему одинарные
ничего странного.
> и всё же добавляет, но такая же фигня с обрезанием картинок.
> Уже не знаю что делать=(
не понял. что с обрезанием? теперь ошибки нет?
← →
DmitrichJ (2007-04-04 21:32) [45]Jan1, ошибки при добавлении нет. И в BDE не было. Просто саму картинку он добавляет только 32кб, а всё остальное нет.
← →
Jan1 (2007-04-05 10:34) [46]
> Jan1, ошибки при добавлении нет. И в BDE не было. Просто
> саму картинку он добавляет только 32кб, а всё остальное
> нет.
1. Версия сервера, сервис паки и т.п.
2. Какие драйвера юзаешь.
3. Полностью код.
4. Как проверяешь.
← →
DmitrichJ (2007-04-05 12:21) [47]Настройки DBE:
DataBase:
DataBaseName=aventin
DriverName=MSSQL
Params:
User Name=sa
Pssword=...
ServerName=server1
DataBase Name=aventin
Query:
DataBaseName=aventin
{в параметрах ничего не указываю, другие настройки по умолчанию}
Делаю собственно добавление, как писал выше:
var
stream:TMemoryStream;
...
//Вставляем в MS SQL
Form1.Query1.SQL.Text:=
"Insert into Table(...,photo) values (.... , :P)";
stream:=TMemoryStream.Create;
stream.LoadFromFile("...");
Form1.Query1.ParamByName("P").LoadFromStream(stream,ftBlob);
Form1.Query1.ExecSQL;
Form1.Query1.ExecSQL;
//--------------MS SQL
photo IMAGE
Проверка:
Form1.Query1.SQL.Text:=
"Select * from table where...";
Form1.Query1.Active;
1. Проверяю в отчёте Fast Reporte 4, картинка связывается с полем и отображается только часть, хотя тоже самое в InterBase делается всё полностью.
2.
var
stream:TStringStream;
...
stream:=TStringStream.Create(Form1.Query1.FieldByName("photo").asstring);
ShowMessage(inttostr(stream.size)+"b");
Результат: 32768b. Если данные меньше, то всё ок, а если больше то отсекаются.
← →
Jan1 (2007-04-05 12:26) [48]
> 1. Версия сервера, сервис паки и т.п.
> 2. Какие драйвера юзаешь.
где?
← →
DmitrichJ (2007-04-05 12:32) [49]1. На сервере Microsoft SQL Server 2000 (server и client)
На клиенте Microsoft SQL Server 2000 (client)
2. Извини, про драйвера не совсем понял. Если в DataBase, то MSSQL
← →
Jan1 (2007-04-05 12:41) [50]
> 1. На сервере Microsoft SQL Server 2000 (server и client)
> На клиенте Microsoft SQL Server 2000 (client)
что дает select @@version?
← →
DmitrichJ (2007-04-05 12:49) [51]Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
← →
Jan1 (2007-04-05 13:06) [52]
> Microsoft SQL Server 2000 - 8.00.760
не мешало бы обновиться... уже 4-й сервис пак вышел.
SP4 + Hot Fixes
← →
Jan1 (2007-04-05 13:07) [53]
> Form1.Query1.SQL.Text:=
> "Insert into Table(...,photo) values (.... , :P)";
>
> stream:=TMemoryStream.Create;
> stream.LoadFromFile("...");
> Form1.Query1.ParamByName("P").LoadFromStream(stream,ftBlob);
>
> Form1.Query1.ExecSQL;
запусти профайлер и посмотри какой запрос идет на сервак.
← →
DmitrichJ (2007-04-05 13:20) [54]Insert into Table(...,photo) values (.... , 0xffd8....
там где данные картинки строка короткая для картинки и не закрывается скобкой
← →
DmitrichJ (2007-04-05 13:20) [55]не знаю как из проф файла сразу всё скопировать.
← →
DmitrichJ (2007-04-05 14:16) [56]Не всё так просто! Там есть команда: set textsize 32786 !!!!!!!!!!!! Как её изменить?
← →
DmitrichJ (2007-04-05 15:03) [57]Если послать команду set text size < чем 32768, то все данные и будут так работать, но если поставить> 32768, то всё равно 32768. ЧЁРТ!!!!
← →
DmitrichJ (2007-04-05 15:03) [58]Если послать команду set text size < чем 32768, то все данные и будут так работать, но если поставить> 32768, то всё равно 32768. ЧЁРТ!!!!
← →
Gadenysh (2007-04-05 18:36) [59]так я заливаю медиа через АДО. может, чем поможет
procedure TDataContext.PutBLOBData(ImageID, ContentTypeID, MediaTypeID: integer;
MediaURL: string; Stream: TStream);
var
q: TADODataSet;
sm: TStream;
begin
q := TADODataSet.Create(nil);
try
q.Connection := Datasource;
DBUtils.RunQuery(q, sqlAppendMedia, ["id", "contentTypeID", "mediaTypeID", "mediaURL"],
[ImageID, ContentTypeID, MediaTypeID, MediaURL], true); // тут обычный инсерт для всех полей кроме Image
q.Edit;
sm := q.CreateBlobStream(q.FieldByName("MediaFile"), bmWrite);
try
Stream.Position := 0;
sm.CopyFrom(Stream, Stream.Size);
finally
sm.Free;
end;
q.Post;
finally
q.Free;
end;
end;
← →
DmitrichJ (2007-04-06 12:30) [60]Что такое DBUtils?
← →
DmitrichJ (2007-04-06 15:35) [61]что такое DBUtils?
← →
Gadenysh (2007-04-06 17:54) [62]
> что такое DBUtils?
да неважно - это моя библиотека. RunQuery - обертка, выполняющая запросы.Для тебя же общий принцип такой - вставляется запись без поля Image. Потом позиционируешь на нее датасет(по ID например), делаешь Edit, создаешь поток для поля и копируешь в него из созданного ранее потока с картинкой. Делаешь Post. вобщем, см. код
← →
Германн © (2007-04-07 01:51) [63]Чой-то как не заглянешь в "Базы", сей топик где-то сверху уже вторую неделю. :(
Я вот только не пойму - зачем "фото" хранить в самой базе? Это что - редактируемая пользователями на уровне пикселей информация?
← →
DmitrichJ (2007-04-19 12:21) [64]Если кому интересно, то проблема была в компоненте подключения, что BDE, что ADO одно и то же. Не реагируют на TextSize. После подключение через библиотеки dbExpress всё решилось само сабой и заработало как часы. Всем мпасибо!
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.041 c