Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
15-1182025715
rumpelshtilchen
2007-06-17 00:28
2007.07.22
Язык


2-1182745639
Washington
2007-06-25 08:27
2007.07.22
Выделение записей в ListBox e


15-1182838955
GeLLeR
2007-06-26 10:22
2007.07.22
Будет ли TMediaPlayer


4-1171289944
Khabibulin
2007-02-12 17:19
2007.07.22
system wide hook


2-1182477171
wesel
2007-06-22 05:52
2007.07.22
MDI приложения, переход по открытым окнам как по TASKBAR





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский