Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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 тебе не подойдет?



Страницы: 1 вся ветка

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

Наверх





Память: 0.47 MB
Время: 0.004 c
3-90216
OlegD
2001-12-24 18:45
2002.01.28
ADO table


6-90328
Woolen
2001-10-13 09:02
2002.01.28
Информация о траффике


1-90322
Konsul
2002-01-03 13:32
2002.01.28
Зажигание клавиш


1-90284
}{elgi
2002-01-09 15:48
2002.01.28
Как установить С Builder компонент в Delphi


14-90373
Den111
2001-11-29 10:37
2002.01.28
Создание формы в run-time





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский