![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
|||
|
|||
|
ты бы исходники проекта приложил (с базой), проще было бы
|
|
#17
|
|||
|
|||
|
Вот сам проект (в тестовом варианте)
http://depositfiles.com/files/q7j9sr00o |
|
#18
|
|||
|
|||
|
блин, не могу импортировать, у тя MSSQL 2000 чтоли?
импортируй используемые таблицы в SQL-text добавление: не, не надо, чота я протупил, щас сам базу создам с таблицей |
|
#19
|
|||
|
|||
|
тебе нужно событие ставить не в AfterScroll что бы появлялась картинка сразу после добавления, а в AfterPost (AfterScroll срабатывает когда перемещаешься по набору данных, а не после добавления данных). НО и событие AfterScroll оставить тоже (создай процедуру и воткни её в AfterScroll и AfterPost, что бы не плодить код лишний)
Добавление: и добавь ADOQuery1.Post; в конец процедуры, которая сохраняет данные в IMAGE поле (тогда картинка будет появляется сразу после нажатия кнопки добавления) Последний раз редактировалось Assistant, 07.03.2011 в 02:05. |
|
#20
|
|||
|
|||
|
Цитата:
А вообще там и импортировать нечего...обычная тестовая база StudyDB, которая состоит из одной таблицы temptable (а таблица в свою очередь состоит из трёх полей: id, name и photo) |
|
#21
|
|||
|
|||
|
база не нужна уже, я выше написал что нужно переделать (доделать)
|
|
#22
|
|||
|
|||
|
Цитата:
Цитата:
Последний раз редактировалось Kapitoshka438, 07.03.2011 в 07:38. |
|
#23
|
|||
|
|||
|
Всем большое спасибо за помощь! Вроде бы во всём разобрался!
![]() Но есть еще один вопрос (немного не по теме)! Я сделал поиск по Гриду (в виде фильтра). И один из элементов, который я использую для этого - ComboBox (для выбора поля, по которому будет происходить фильтрация). Для заполнения комбобокса пишу такой код Код:
for i:=0 to ADOQuery1.FieldCount - 1 do Combobox1.Items.Add(ADOQuery1.Fields[i].fieldname); ComboBox1.text := ADOQuery1.Fields[0].fieldname; Заранее благодарен! Последний раз редактировалось jekahm, 07.03.2011 в 23:57. |
|
#24
|
|||
|
|||
|
Народ, ну кто-нибудь, отзовитесь!
|
|
#25
|
|||
|
|||
|
самый просто способ, при заполнении грида, сопостовлять "поле -> нормальное имя" через case и при взятии значения из combobox делать обратное сопостовление "нормальное имя->поле". типо такова:
Код:
var
fields, names: TStringList;
function TForm1.GetNameFromField(field: string);
begin
Result := names[fields.IndexOf(field)];
end;
function TForm1.GetFieldFromName(name: string);
begin
Result := fields[names.IndexOf(name)];
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
fields := TStringList.Create;
names := TStringList.Create;
fields.Add('fio');
names.Add('Фамилия');
fields.Add('name');
names.Add('Название');
fields.Add('value');
names.Add('Значение');
for i:=0 to ADOQuery1.FieldCount - 1 do
Combobox1.Items.Add(GetNameFromField(ADOQuery1.Fields[i].fieldname));
end;
procedure TForm1.FilterClick(Sender: TObject);
var
fieldname: string;
begin
fieldname := GetFieldFromName(ComboBox1.Text);
// тут применение фильтра по полю fieldname
end;можно сделать и на массива (но так для понимая проще, как я написал). P.S.: за ошибки не ручаюсь, писалось "на лету" без Delphi, но смысел должен быть понятен Последний раз редактировалось Assistant, 10.03.2011 в 23:46. |