![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 17.11.2010
Сообщений: 262
|
![]()
у меня есть DBGrid мне надо с текущей строки передать одно поле в Edit другое это BLOB поле и его надо сохранить на диск.
Так же есть вопрос. Как можно зная имя юзера, передать все его заявки в DBGrid, если в переменной хранится его имя, заявка состоит из темы, которая берется из справочника, поля описания проблемы, имя юзера и BLOB поле с файлом который он загрузил. Я думал хранимой процедурой, но с синтаксисом не справился, может кто помочь? Не надо меня направлять в темы с BLOB, там такого нет. Как пользоваться именно текущей строкой в DBGride? Последний раз редактировалось Drugnir; 04.12.2010 в 14:22. |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
текущая строка DBGrid это текущая запись в наборе данных DBgrid.DataSource.dataSet.
Далле смотрим(ищем) поле fieldByName('youblobfield') Далее как раз имеем то что вм не нужно Цитата:
Edit1.Text:=
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 17.11.2010
Сообщений: 262
|
![]()
Спасибо, сейчас посмотрю
Вот только с BLOB что делать как его на диск сохранить пробую вот так и не соответствие выходит Код:
и как потом использовать SaveDialog? А как быть с юзером? Последний раз редактировалось Stilet; 04.12.2010 в 18:12. |
![]() |
![]() |
![]() |
#4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Сохранение и чтение файлов в BLOB-полях
Код:
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 17.11.2010
Сообщений: 262
|
![]()
Спасибо, только у меня чет нету TBlobStream, по-этому написал просто TStream и заработало
Пишу как вы и говорили, выдает ошибку canmodify read-only dataset уже и добавил в код DataModule1.ds2(мой датасет).CanModify:=True; DataModule1.ds2.Edit; при сохранении, т.к. до этого сохранял через BlockRead, а выгрузил как вы посоветовали, в итоге файл оказался пустым И еще таким способом будет выбрана текущая запись или первая, не понятно. Если не сложно, то объясните. Последний раз редактировалось mihali4; 05.12.2010 в 17:08. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 17.11.2010
Сообщений: 262
|
![]()
Было мало буфера с этим справился, вот только теперь с кодировками проблемы какие-то, везде win1251 стоит, а в файл одни квадратики закидываются. Может это быть из-за разных способов загрузки и выгрузки файла?
загружаю так var f:file; bufi: array [1..2048] of Char; NumRead:integer; if OpenFile.Execute then begin AssignFile(f, OpenFile.Name); Rewrite(f, 1); repeat BlockRead(f,Bufi, SizeOf(Bufi), NumRead); until NumRead=0; end; Query1.ParamByName('MyFile').AsBlob :=Bufi И вот что получается либо загрузить не могу через потоки, так как выдает ошибку not in edit mode либо выгрузить файл через BlockWrite не могу А два разных метода загрузки и выгрузки ломают кодировку и в файл выгружаются квадратики Последний раз редактировалось Drugnir; 06.12.2010 в 00:42. |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 17.11.2010
Сообщений: 262
|
![]()
Спасибо. Очень много интересного нашел. Пишу вот такой несложный запрос, но выбрасывает ошибки типа не могу считать кусок памяти может это где-то в настройках компонент доступа в базу надо или в коде есть, можете посмотреть?
try DataModule1.tr3.StartTransaction; DataModule1.q1.SQL.Text:=('INSERT INTO ZAYAVKA (ID_ZAYAVKI, ID_NAME, UTOCHNENIE, OPISANIE, DATA, USER_NAME, FILE_NAME) VALUES (:ID_ZAYAVKI, :ID_NAME, :UTOCHNENIE, :OPISANIE, :DATA, :USER_NAME, :FILE_NAME)'); DataModule1.q1.Prepare; DataModule1.q1.ParamByName('ID_ZAYA VKI').Value:= null; DataModule1.q1.ParamByName('UTOCHNE NIE').AsString:=Edt1.Text; DataModule1.q1.ParamByName('OPISANI E').AsString:=mmo1.Text; DataModule1.q1.ParamByName('DATA'). AsDateTime:=Date; DataModule1.q1.ParamByName('USER_NA ME').AsString:=Nick; DataModule1.q1.ParamByName('ID_NAME ').Value:=DataModule1.ds1.FieldByNa me('ID_NAME').Value; TBlobField(DataModule1.q1.ParamByNa me('FILE_NAME')).LoadFromFile(sPath +'\1.txt'); DataModule1.q1.ExecSQL; DataModule1.tr3.Commit; ShowMessage('Заявка отправлена'); except DataModule1.tr2.Rollback; end; |
![]() |
![]() |
![]() |
#9 |
!=
Участник клуба
Регистрация: 08.09.2008
Сообщений: 1,751
|
![]()
А какие компоненты для доступа к базе используете?
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 17.11.2010
Сообщений: 262
|
![]()
IBDataBase, DataSource, IBTransaction, IBDataSet, IBQuery, IBStoredProc
Даже поставил кэш везде на 20кб |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Firebird vs Delphi HELP! | paSHIZ | БД в Delphi | 4 | 13.01.2009 12:19 |
Как поле FireBird.домен.Numeric(7,2) увидеть в DBGrid с добной частью? | Vladimir Trufanov | БД в Delphi | 2 | 07.01.2009 10:00 |