Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];




Вниз

Помогите!!! :) 


Andrey196   (2001-12-23 19:49) [0]

Мне нужно чтобы в комбобокс.items заносилось поле из БД
и при выборе из списка индекс БД вставал на выбранную запись.

СПАСИБО!!!!!!



Andrey196   (2001-12-23 20:37) [1]

ТУТ ВОБЩЕ PEOPLE LIFE ЕСТЬ ИЛИ ВСЕ DEAD!!!!!



Light Elf   (2001-12-23 20:56) [2]

Может я и где, но вопроса не понял.



Andrey196   (2001-12-23 21:08) [3]

У меня есть база данных там есть много столбцов,
Мне нужно все запись одного столбца запихнуть в combobox (желательно автоматически) и при выборе из списка combobox указатель таблици должен встать на выбранную запись



Atrem   (2001-12-23 22:25) [4]

Занести данные в комбобокс
yourtable.first;
while not eof(yourtable) do begin
combobox.items.add(yourtable.field.value);
yourtable.next;
end;
А встать на выбранную запись можно с помощью метода locate,правда если поле заносимое в комбобокс уникальное
А вообще мне кажется лучше использовать DBlookupcombobox



Turalyon   (2001-12-24 09:37) [5]

Я что то не понял, что надо заносить столбцы (названия) или строки (поля из записей)????



Сергей Иванов   (2001-12-24 10:00) [6]

//дополню ответ Atrem
//заполнение. например, в обработчике FormCreate
with MainData.Table do begin
if not Active then Open;
First;
while not EOF do begin
MyCombo.Items.Add(FieldByName("Name").AsString);
Next;
end; {while not EOF}
end; {MainData.Table}
//позиционирование
if not MainData.Table.Locate("Name", MyCombo.Text, []) then exit {не нашли?}
//инкрементный поиск можно сделать, навесив обработчик на MyComboKeyPress, хорошй пример есть в хелпе.
//более простой вариант - взять из кладовки компонент TFieldFinder.



AlexSV   (2001-12-24 12:13) [7]

Я тоже столкнулся с этой проблемой.
Сначала использовал для этих целей TDBLookupComboBox, в котором
свойства DataSource и DataField не инициальзаровал. Вообщем работало,
пока не поставил этот режим на Master, у которого был Detail, который
в свою очередь был Master. Стало тормозить.
Оказалось, что TDBLookupComboBox при выпадании списка переоткрывает
запрос дважды (ну и соответственно все подчиненные).
При этом, когда бегаешь по выпавшему списку скроллом, то он не отключает механизм Master-Detail, что тоже тормозит.
Собственно решений я не нашел (или плохо искал).
Первое, что я сделал, это в Tag TComboBox-а записал указатель на DataSet.
Вот так:

procedure SetDataSetToComboBox(cb : TComboBox; ds : TDataSet);
begin
cb.Tag := LongInt(ds);
end;

Далее организовал заполнение ComboBox-а соответствующими значениями поля
из набора:

function FillComboBoxList(cb : TComboBox; DispField : string): Integer;
var
qInCB : TQuery;
begin
Result := 1;
if (cb.Tag < 0) then begin
Result := 0;
Exit;
end;
qInCB := TQuery(cb.Tag);
if qInCB.Active then
qInCB.Close;
if (InitQueryParams(qInCB) > 0) then with qInCB do begin
qInCB.Open;
if (FindField(DispField) = nil) then begin
Result := -1;
Exit;
end;
cb.Clear;
if RecordCount > 0 then begin
First;
while not Eof do
begin
cb.Items.AddObject(FieldByName(DispField).AsString, GetBookmark);
Next;
end;
cb.ItemIndex := 0;
GotoBookmark(cb.Items.Objects[0]);
cb.Enabled := True;
end else begin
cb.Enabled := False;
end;
end;
end;

И, наконец, в самом ComboBox-е на OnChange:

procedure TForm.cbChange(Sender: TObject);
var
dsInCB : TDataSet;
cb: TComboBox;
begin
if not (Sender is TComboBox) then
Exit;
cb := (Sender as TComboBox);
dsInCB := TDataSet((Sender as TComboBox).Tag);
dsInCB.GotoBookmark(cb.Items.Objects[cb.ItemIndex]);
// Здесь можно выполнять еще дополнительные действия
end;

Основное, на что надо обращать внимание при этом:
1. Переоткрытие запроса должно отслеживать перезаполнение ComboBox-а,
или его Text-а в случае удаления записи из DataSet-а.
2. Синхронизация DataSet-а с другими, и соответственно переход на
активную запись в самом ComboBox-е.

Когда это все надоело, то для себя слепил компонент.
Если будет интерес, то пиши на мой ящик.

Пока.



DiggerAbstract   (2001-12-24 12:57) [8]

а DBLookUpComboBox тебе не подойдет?




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.021 c
1-90297           Romul                 2002-01-09 09:52  2002.01.28  
Удаление непечатных символов из строки


4-90418           Ghost666              2001-11-24 04:00  2002.01.28  
EXENAME


14-90374          asafr                 2001-12-04 18:28  2002.01.28  
Появился lel и всё оживилось... О женщинах опять заговорили...


3-90195           Вика                  2001-12-21 22:25  2002.01.28  
Хранимые процедуры и рефреш таблицы


4-90412           Art                   2001-11-27 15:53  2002.01.28  
Как запретить запускать ехе шник ???