Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Demidova Aigul
Зарегистрирован: 29.03.2005 Сообщения: 7 Откуда: Казахстан, г. Алматы
|
Добавлено: Вт Апр 05 2005 12:31 Заголовок сообщения: Помогите мне, глупой, найти ошибку в SQL-коде на insert!!! |
|
|
Крутые Делфисты!!! Я новичок в Delphi! Помогите мне, глупой, найти ошибку в SQL-коде! Почему-то у меня вместо картинки в таблице в базе пустота добавляется. И в строке ParamByName('0').Assign(Form1.image_mapp.Picture) тоже пустота, когда в отладчике курсор поставить на Form1.image_mapp.Picture. В чем ошибка? Подскажите, пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Код был такой (с помощью этого кода хотела выбрать картинку из OpenPictureDialog1.FileName, а потом добавить эту картинку в таблицу "map_path" в поле "path"):
with modif_path do
if OpenPictureDialog1.Execute then begin
Form1.image_mapp.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Close;
SQL.Clear;
SQL.Add('insert into map_path (path,InventoryID) values (:0, :1)');
ParamByName('0').Assign(Form1.image_mapp.Picture);
ParamByName('1').AsInteger := dm.Query1InventoryID.AsInteger;
Prepare;
ExecSQL;
Query1.Close;
Query1.Open;
end;
Пожалуйста, помогите мне!!!!!!!!!!!!!!!! _________________ новичок |
|
Вернуться к началу |
|
 |
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Ср Апр 06 2005 10:29 Заголовок сообщения: |
|
|
Попробуй:
blob : TMemoryStream;
...
blob = TMemoryStream.Create;
... . Picture.Bitmap.SaveToStream(blob);
blob.Seek(soFromBeginning, 0);
... . ParamByName(где картинка).LoadFromStream(blob);
blob.Free; |
|
Вернуться к началу |
|
 |
Demidova Aigul
Зарегистрирован: 29.03.2005 Сообщения: 7 Откуда: Казахстан, г. Алматы
|
Добавлено: Ср Апр 06 2005 11:19 Заголовок сообщения: thank for Wladimir |
|
|
Спасибо за подсказку!
Моим способом у меня сегодня тоже получилось исправить код. Теперь работает. Вот так получилось:
[code]
with modif_path do
if OpenPictureDialog1.Execute then begin
Form1.image_mapp.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Close;
SQL.Clear;
SQL.Add('insert into map_path (path,InventoryID) values (:0, :1)');
ParamByName('0').LoadFromFile(OpenPictureDialog1.FileName,ftGraphic);
ParamByName('1').AsInteger := dm.Query1InventoryID.AsInteger;
Prepare;
ExecSQL;
Query1.Close;
Query1.Open;
end;
А с потоками, если честно, у меня нет опыта работы. А хотелось бы испробовать и этот способ. Не знаю, так что-ли нужно написать (только за стул покрепче советую держаться, чтоб от смеха не упасть):
[code]
var blob : TMemoryStream;
......
with modif_path do
if OpenPictureDialog1.Execute then begin
Form1.image_mapp.Picture.LoadFromFile(OpenPictureDialog1.FileName);
blob = TMemoryStream.Create;
Form1.image_mapp.Picture.Bitmap.SaveToStream(blob);
blob.Seek(soFromBeginning, 0);
Close;
SQL.Clear;
SQL.Add('insert into map_path (path,InventoryID) values (:0, :1)');
ParamByName('0').LoadFromStream(blob);
ParamByName('1').AsInteger := dm.Query1InventoryID.AsInteger;
Prepare;
ExecSQL;
blob.Free;
Query1.Close;
Query1.Open;
end; _________________ новичок |
|
Вернуться к началу |
|
 |
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Ср Апр 06 2005 14:26 Заголовок сообщения: |
|
|
Ну да, вроде так мы когда-то и делали.
LoadFromFile - фактически тот же LoadFromStream, просто поток при этом создаётся уничтожается автоматически внутри метода работы с файлом. |
|
Вернуться к началу |
|
 |
Demidova Aigul
Зарегистрирован: 29.03.2005 Сообщения: 7 Откуда: Казахстан, г. Алматы
|
Добавлено: Чт Апр 07 2005 09:19 Заголовок сообщения: |
|
|
OK! Спасибо! Сейчас нет времени, но чуть позже испробую этот способ с потоками (может, какие-нибудь ошибки вылезут). _________________ новичок |
|
Вернуться к началу |
|
 |
|