![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DBComboBox
Andrewtitoff © (2009-11-02 15:39:00)Здравствуйте!, подскажите пожалуйста как сделать что бы в DBComboBox работал выпадающий список?, не ручным заполнением, т.к. у меня в таблице 80 полей и 7тысяч записей, а при ручном заполнении получается приличная тормозня т.к. при ручном заполнении приходится еще и проверять на наличие уже такой записи в DBComboBox-е (в таблице только одно поле ключевое и уникальное, все остальные могут повторяться сколько угодно хоть все 7тыс одинаковые...), или может быть что то другое использовать, а не DBComboBox, но нужна возможность редактирования...
Сергей М. (2009-11-06 13:39:00) [21]Мдя..
Что ни шаг, то грабли)
Amoeba (2009-11-06 13:39:00) [22]Подсказываю тупящему:
[Form1.ADOTable4.Fields[tag].AsString]
или
[Form1.ADOTable4.Fields[tag].Value]
в зависимости от типа поля.
Сергей М. (2009-11-06 13:38:00) [23]Св-во Fields[] имеет тип TField, а не String.
Потому и invalid or incompatible)
Andrewtitoff (2009-11-06 13:37:00) [24]так
Form1.ADOQuery1.SQL.Text:=Format('select distinct %'+inttostr(tag)+':s from lift',[Form1.ADOTable4.Fields[tag]]);
ту же ошибку выдает...
Amoeba (2009-11-06 13:37:00) [25]
> [Form1.ADOTable4.Fields[tag]
Здесь строку должно передать, а у тебя что? Объект поле!
Andrewtitoff (2009-11-06 13:35:00) [26]что сюда
Form1.ADOTable4.Fields[i]
вместо "i" писать то?
Andrewtitoff (2009-11-06 13:32:00) [27]Млин, чет я уже совсем с ума схожу, пишу так:
for i := 0 to Form2.ComponentCount - 1 do
if Form2.Components[i] is TDBComboBox then
with TDBComboBox(Form2.Components[i]) do
begin
Form1.ADOQuery1.SQL.Text:=Format('select distinct %s from lift',[Form1.ADOTable4.Fields[tag]]);
while not Form1.ADOQuery1.Eof do
begin
Items.Add(Form1.ADOQuery1.Fields[0].AsString);
Form1.ADOQuery1.Next;
end;
{} ShowMessage(name+ '='+inttostr(Form2.Components[i].Tag)+'='+inttostr(i));
end;
В строке
Form1.ADOQuery1.SQL.Text:=Format('select distinct %s from lift',[Form1.ADOTable4.Fields[tag]]);
выдает ошибку Format '%s' invalid or incompatible with argument
Сергей М. (2009-11-06 13:14:00) [28]
> а что это плохо?
А разве плохо зайдя в подъезд доехать на лифте до нужного 7го этажа, просто нажав кнопку с цифрой "7", вместо того чтобы шлепать туда пешком по лестнице и считать этажи самому ?)
Andrewtitoff (2009-11-06 13:04:00) [29]
> Сергей М. © (06.11.09 12:55) [123]
> > делаю прям на формеНа форме кроме тех комбобоксов у тебя
> наверняка еще туева хуча всякоразных компонентов.И сей факт
> исключает возможность обойтись без проверки Components[i]
> is TComboBox
Да, так я с проверкой делаю, а что это плохо?
Сергей М. (2009-11-06 12:55:00) [30]
> делаю прям на форме
На форме кроме тех комбобоксов у тебя наверняка еще туева хуча всякоразных компонентов.
И сей факт исключает возможность обойтись без проверки
Components[i] is TComboBox
Anatoly Podgoretsky (2009-11-06 12:51:00) [31]> Andrewtitoff (06.11.2009 12:40:59) [119]
У компонентов нет порядковых номеров.
Andrewtitoff (2009-11-06 12:46:00) [32]
> Сергей М. © (06.11.09 12:42) [120]
> > какое свойство отвечает за порядковый номер компонента?
> Компонент не имеет порядкового номера.
Да, я уже осознал, делаю уже через Таг, правда не стал никуда размещать, делаю прям на форме
Сергей М. (2009-11-06 12:42:00) [33]
> какое свойство отвечает за порядковый номер компонента?
Компонент не имеет порядкового номера.
Andrewtitoff (2009-11-06 12:40:00) [34]
> Сергей М. © (06.11.09 12:03) [118]
> > опять я тупанулЧто-то подозрительно часто это происходит)
Ну да, бывает, =)))
просто отвлекают часто еще... =)))
А какое свойство отвечает за порядковый номер компонента?, т.е. что-бы без Таг-а обойтись - а так же по Components[i] обращаться?, или так нельзя?
Сергей М. (2009-11-06 12:03:00) [35]
> опять я тупанул
Что-то подозрительно часто это происходит)
Andrewtitoff (2009-11-06 12:02:00) [36]Undeclared identifier: 'TDBComboBox'
Сорри, это опять я тупанул, там в юсесах небыло прописано DB...
Сергей М. (2009-11-06 11:56:00) [37]
> подчеркивает TDBComboBox
Молча подчеркивает ?)
Andrewtitoff (2009-11-06 11:53:00) [38]
> Сергей М. © (06.11.09 11:26) [113]
> Одно из простейших решений:Помести свои комбобоксы на, например,
> TPanel, в св-ве Tag каждого укажи индекс соотв.поля в своей
> таблице.Тогдаfor i := 0 to ComboPanel.ComponentCount - 1
> do if ComboPanel.Components[i] is TComboBox then with
> TComboBox(ComboPanel.Components[i]) do begin
> FieldIndex := Tag;.... end;
А почему так ему нравится:
if Form2.Components[i] is TComboBox then
а так не хочеТ:
if Form2.Components[i] is TDBComboBox then
подчеркивает TDBComboBox....
sniknik (2009-11-06 11:35:00) [39]> кстати, есть такая фишка, как множественные рекордсеты.
access/jet не поддерживает.
Сергей М. (2009-11-06 11:26:00) [40]Одно из простейших решений:
Помести свои комбобоксы на, например, TPanel, в св-ве Tag каждого укажи индекс соотв.поля в своей таблице.
Тогда
for i := 0 to ComboPanel.ComponentCount - 1 do
if ComboPanel.Components[i] is TComboBox then
with TComboBox(ComboPanel.Components[i]) do
begin
FieldIndex := Tag;
....
end;