![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сформировать список... [D7, IB6.x]
makvell © (2005-12-05 23:16:00)Осваиваю IB, задача следующая:
В БД есть несколько таблиц... В программе нужно
сформировать список из значений поля THEME_NAME
одной из таблиц...
Пишу примерно следующую процедуру:
procedure TInsertF.ListThemeCreate;
var
i: integer;
begin
cxComboBox1.Clear;
IBTransaction1.StartTransaction;
IBDataSet1.Open;
For i:=(IBDataSet1.RecordCount-1) downto 0 do
begin
cxComboBox1.Properties.Items.Add(IBDataSet1.FieldByName('THEME_NAME').AsString);
IBDataSet1.Next;
end;
IBTransaction1.Commit;
end;
Добавляю еще одну запись, а в списе по-прежнему одна,
или, что еще интереснее две, НО одинаковые (первая запись)...
В чем ошибка?
Заранее спасибо!
Johnmen (2005-12-07 09:06:00) [1]>makvell (07.12.05 00:21) [6]
Я говорил о F1 на TDBComboBox !
Использование в данном случае TComboBox есть глупость. Или наив неискушенной души...:)
makvell (2005-12-07 00:21:00) [2]
> Johnmen © (06.12.05 17:42) [5]
> Попробовать почитать по F1
F1:
Description
Use Items to supply the values in the list from which the user can choose. Because Items is an object of type TStrings, you can add, delete, insert, and move items using the Add, Delete, Insert, Exchange, and Move methods of the TStrings object. For example, to add each string to the combo box list, write code such as the following:
while not CountryTbl.Eof do begin
DBComboBox1.Items.Add(CountryTbl.FieldByName('Country').AsString);
CountryTbl.Next;
end;
...
> unknown © (06.12.05 02:43) [1]
> Надо или сначала все записи профетчить IBDataSet1.FetchAll
> или (что, ИМХО, разумнее) делать так:
> ......
Еще раз спасибо.
Johnmen (2005-12-06 17:42:00) [3]Попробовать почитать по F1
makvell (2005-12-06 17:34:00) [4]
> И зачем это всё гнать в комбобокс??????? В чём фишка?
> Есть же TDBCombobox и прочие DB-Aware контролы....
TDBComboBox... и что, как с ним сделать список из значений
полей одной из таблиц?
Johnmen (2005-12-06 09:59:00) [5]И зачем это всё гнать в комбобокс??????? В чём фишка?
Есть же TDBCombobox и прочие DB-Aware контролы....
msguns (2005-12-06 09:34:00) [6]Для того, чтобы получить реальный RecordCount, надо после Open дать датасету Last либо FetchAll
unknown (2005-12-06 02:43:00) [7]>makvell (05.12.05 23:16)
>В чем ошибка?
вот в этом:
For i:=(IBDataSet1.RecordCount-1) downto 0 do
Надо или сначала все записи профетчить IBDataSet1.FetchAll
или (что, ИМХО, разумнее) делать так:
IBDataSet1.First;
while not IBDataSet1.Eof do
begin
......
IBDataSet1.Next;
end;