| 
| 
 | Вопрос # 5 083/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Здравствуйте, уважаемые эксперты!
 Подскажите , пожалуйста!работаю с Delphi 7+ADO+Access как сделать чтобы когда Я нажимал на кнопку на форме в Delphi  у меня появлялась окно , где я указываю путь к картинке , а после этого она добавляла в БД - таблицу, в поле у меня оно наз. фото(обычное текстовое)добавился путь к файлу...
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) 
|  |   Вопрос задал: stasz13 (статус: Посетитель)Вопрос отправлен: 12 марта 2011, 23:26
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 9; последнее сообщение — 14 марта 2011, 05:26; участников в обсуждении: 3. 
|   | min@y™ (статус: Доктор наук), 12 марта 2011, 23:49 [#1]:Ты хочешь работать с базами данных, не зная самых азов. Это очень печально. Больше и сказать-то нечего... Ещё 1 человек, который думает, что Delphi - это тыканье мышой по форме. Вдвойне печально.
  (( Хранить картинки отдельно от базы в файлах - это не есть комильфо. И это говорю я - чел, который не работает с базами.
 Книжку бы тебе хорошую. Могу посоветоавть, кстати.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | stasz13 (статус: Посетитель), 12 марта 2011, 23:58 [#2]:давай посоветуй! ты имеешь в виду в BLOB , ну я так не знаю как домозговать, поэтому прошу совета можешь , подскажи! |  
|   | min@y™ (статус: Доктор наук), 13 марта 2011, 10:00 [#3]: Цитата (stasz13): ты имеешь в виду в BLOB Ну да. Даже вместе с delphi идёт исходник демо-проги с блобами. А книжек тут у нас полно. А во всём интернете - гораздо больше.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | stasz13 (статус: Посетитель), 13 марта 2011, 17:27 [#4]:Если кто знает помогите, в свойствах компонента DBGrid --> OnDrowColumnCell --> пишу код 
 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
 begin
 Image1.Picture.LoadFromFile(ADOTable1['фотография']);
 Image1.Stretch:=true;
 end;
 
 end.
 
 У меня две формы, выдат ошибку когда я пытаюсь на первой форме нажать Button
 ошибка в неправильности ТИПОВ данных, я не знаю где ставится перевод может кто-нибудь подсказать, ну если я правильно понял конечно о типе...
 ВОТ ошибка
 'Could not convert variant of type (Null) into type (String)'. Process stoped. Use step of Run of to continue.
 |  
|   | Егор (статус: 10-ый класс), 13 марта 2011, 20:52 [#5]:ошибка потому что в базе в поле "фотография" нет информации о пути - поле пустое (NULL). если бы путь там был, картинка бы открылась. может быть   Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.— Donald E. Knuth.
 |  
|   | Егор (статус: 10-ый класс), 13 марта 2011, 20:56 [#6]:а если так: Image1.Picture.LoadFromFile(ADOTable1['фотография'].AsString);
 Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.— Donald E. Knuth.
 |  
|   | stasz13 (статус: Посетитель), 13 марта 2011, 23:23 [#7]:картинка открывается , просто после того как я нажимаю на кнопку с переходом на Form2 она выдает ошибку, Image1.Picture.LoadFromFile(ADOTable1['фотография'].AsString);
 тоже выдает ошибку... .AsString ---так нельзя написать видимо!
 |  
|   | Егор (статус: 10-ый класс), 14 марта 2011, 05:07 [#8]:А, ну так и правильно ошибка вылазит - событие-то DBGrid1DrawColumnCell. Оно возникает каждый раз, когда надо отрисовать ячейку. А ячеек в таблице (DBGrid) сколько? И открыта ли база в момент начала отрисовки? И где находится курсор, на какой записи? Судя по ошибке, курсор в этот момент находится на записи, которая пуста. Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.— Donald E. Knuth.
 |  
|   | Егор (статус: 10-ый класс), 14 марта 2011, 05:26 [#9]:Можно сделать проверку - если в поле нет данных, то картинку не загружать 
 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
                   DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if not ADOTable1['фотография'].IsNull then // или IsEmpty - не помню
  begin
    Image1.Picture.LoadFromFile(ADOTable1['фотография']);
    Image1.Stretch:=true;
  end
end;Но мне сам код не нравится - загружать картинку из файла, а путь в базе. Путей-то много может быть, а компонент Image - один. Если картинку удалим, то опять же ошибка.
 Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.— Donald E. Knuth.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |