1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
У меня есть программа, АРМ администратора компьютерного магазина, вроде когда я беру изображения из БД все нормально картинка отображается в DBImagе, но когда жму кнопку "ДОБАВИТЬ" (Добавиьт данные в таблицу) он выбивает ошибку поэтому даже проверить не могу работоспособность добавления. Помогите пожалуйто с добавлением буду очень благодарен. В архиве прикрепленном снизу вся прога с БД. ВСЕ РАЗАРХИВИРУЙТЕ В ОДНУ ПАПКУ
if (Form2->DataSource1->DataSet->FieldByName("Photo")==NULL)
- неправильно. У тебя никогда не поймается таким образом пустая строка. Ловить пустоту надо вот так:
if ((Form2->DataSource1->DataSet->FieldByName("Photo")->AsString).IsEmpty())
А во-вторых: не надо при добавлении новой записи в базу записывать полный путь к файлу. Достаточно только имени. Иначе сам подумай, что будет пытаться открыть LoadFromFile вот тут: LoadFromFile("photo\\" + strphoto), если в strphoto УЖЕ записан полный путь? Нехорошо, вылет программы обеспечен.
Вот так попробуй:
if ((Form2->DataSource1->DataSet->FieldByName("Photo")->AsString).IsEmpty()) // Изменения здесь { Form2->ADOQuery1->Edit(); Form2->DataSource1->DataSet->FieldValues["Photo"]= "none.jpg"; // и здесь } strphoto = Form2->DataSource1->DataSet->FieldValues["Photo"]; Form2->DataSource1->DataSet->Post(); Form2->DBImage1->Stretch=true; Form2->DBImage1->Picture->LoadFromFile("photo\\" + strphoto);
if (Form2->DataSource1->DataSet->FieldByName("Photo")==NULL)
- неправильно. У тебя никогда не поймается таким образом пустая строка. Ловить пустоту надо вот так:
if ((Form2->DataSource1->DataSet->FieldByName("Photo")->AsString).IsEmpty())
А во-вторых: не надо при добавлении новой записи в базу записывать полный путь к файлу. Достаточно только имени. Иначе сам подумай, что будет пытаться открыть LoadFromFile вот тут: LoadFromFile("photo\\" + strphoto), если в strphoto УЖЕ записан полный путь? Нехорошо, вылет программы обеспечен.
Вот так попробуй:
if ((Form2->DataSource1->DataSet->FieldByName("Photo")->AsString).IsEmpty()) // Изменения здесь { Form2->ADOQuery1->Edit(); Form2->DataSource1->DataSet->FieldValues["Photo"]= "none.jpg"; // и здесь } strphoto = Form2->DataSource1->DataSet->FieldValues["Photo"]; Form2->DataSource1->DataSet->Post(); Form2->DBImage1->Stretch=true; Form2->DBImage1->Picture->LoadFromFile("photo\\" + strphoto);
Блин он все ровно не пашет, пишет что не найден none.jpg и останавливается на этой строчке