Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2011, 00:14   #1
Seva2011
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 31
По умолчанию Парамерт Combobox1.itemIndex не имеет значения по умолчанию

Здравствуйте! у меня проблема с выводом данных из бд в поля edit4,edit5 и т.д. есть вот такой код для вставки данных в бд
Код:
 ADOQuery1.Insert;
 ADOQuery1.FieldByName('фамилия').AsString := Edit1.Text;
 ADOQuery1.FieldByName('адрес').AsString := Edit2.Text;
 ADOQuery1.FieldByName('телефон').AsString := Edit3.Text;
ADOQuery1.FieldByName('Z_N1').AsString := ComboBox1.Text;
ADOQuery1.FieldByName('Z_N2').AsString := ComboBox2.Text;
ADOQuery1.FieldByName('Z_N3').AsString := ComboBox3.Text;
ADOQuery1.FieldByName('Z_N4').AsString := ComboBox4.Text;
ADOQuery1.FieldByName('дата приема').AsString :=DateTostr(Date);
 ADOQuery1.Post;
этот код работает на 1 форме. на второй форме мне надо чтоб при выборе номера id из Combobox все эти данные выводились в поля Edit4.text,Edit5.text...Edit11.text . выпадающий список сделал так
Цитата:
ComboBox1.Items.Clear;
AdoQuery1.Open;
while not AdoQuery1.Eof do
begin
ComboBox1.Items.Add(AdoQuery1.Field ByName('V_C').AsString);
AdoQuery1.Next;
end;
ComboBox1.ItemIndex := 0;
ComboBox1.Text:='';
AdoQuery1.Close;
пытаясь вывести данные в нужные поля делаю запрос
Цитата:
AdoQuery1.Open;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Klients WHERE id = ComboBox1.ItemIndex');
во первых получаю сообщение "Парамерт Combobox1.itemIndex не имеет значения по умолчанию" во вторых если даже запрос выполнится я не знаю как присвоить к примеру поле "телефон" четвертому эдиту и т.д.
во всех статьях и учебниках и видеоуроках рассказывают как вывести данные в DBGrid как будто это единственный компонент куда данные можно выводить. кто знает обьясните пожалуйста!
Seva2011 вне форума Ответить с цитированием
Старый 08.12.2011, 00:19   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
ADOQuery1.SQL.Add('SELECT * FROM Klients WHERE id = '+IntToStr(ComboBox1.ItemIndex)); 
...
Edit4.Text:=ADOQuery1.FieldByName('телефон').AsString;
Цитата:
рассказывают как вывести данные в DBGrid как будто это единственный компонент
Не единственный, но один из самых ходовых и удобных
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.12.2011, 00:58   #3
Seva2011
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 31
По умолчанию

теперь выдает такую ошибку:Точечный рисунок.JPG
походу у меня с бд что то.
Seva2011 вне форума Ответить с цитированием
Старый 08.12.2011, 01:31   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Klients WHERE id = '+IntToStr(ComboBox1.ItemIndex)); 
ADOQuery1.Open;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 08.12.2011 в 11:33.
Аватар вне форума Ответить с цитированием
Старый 08.12.2011, 11:10   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
мне надо чтоб при выборе номера id из Combobox
Цитата:
Код:
ComboBox1.Items.Add(AdoQuery1.Field ByName('V_C').AsString);
скорее всего для фильтра все-таки требуется не сам индекс строки, а данные находящиеся в выбранной строке.
COmbobox1.Text;
comboBox1.Items[comboBox1.ItemIndex];

и надо учитывать что строка может быть не выбрана ItemIndex=-1
Код:
if comboBox1.ItemIndex>=0 then 
  ADOQuery1.SQL.Add('SELECT * FROM Klients WHERE id = '+ ComboBox1.Items[combobox1.ItemIndex]
else 
  ???????????  ;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 08.12.2011, 12:22   #6
Seva2011
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 31
По умолчанию

Огромное Спасибо за помощь! все получилось!!!)))))

ээммм а не подскажите как теперь данные обновить базе чтоб при нажатии на кнопку данные в полях фамилия и адрес обновились где id равен значению выбранному в ComboBox1.Items[ComboBox1.Itemindex] ?

Последний раз редактировалось Stilet; 10.12.2011 в 19:01.
Seva2011 вне форума Ответить с цитированием
Старый 09.12.2011, 00:05   #7
alexiz
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Seva2011 Посмотреть сообщение
..как теперь данные обновить базе чтоб при нажатии на кнопку данные в полях фамилия и адрес обновились где id равен значению выбранному в ComboBox1.Items[ComboBox1.Itemindex] ?
Например так:
Код:
//установить Датасет на нужную запись
if  ADOQuery1.Locate('Id', StrToInt(ComboBox1.Text),[]) then
begin
  ADOQuery1.Edit; //перевести в редактирование
  ADOQuery1.FieldByName('фамилия').AsString := Edit1.Text;
  ADOQuery1.FieldByName('телефон').AsString := Edit3.Text;
  ADOQuery1.Post; //сохранить в БД 
end;
Ваша благодарность может быть материальной:
WM R103871054215, WM Z710411027344, ЯндД: 410011167596676
alexiz вне форума Ответить с цитированием
Старый 09.12.2011, 00:18   #8
Seva2011
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 31
Хорошо

Огромное спасибо!

Еще 1 вопрос. В цикле
Код:
ComboBox1.Items.Clear;
AdoQuery1.Open;
while not AdoQuery1.Eof do
begin
ComboBox1.Items.Add(AdoQuery1.Field ByName('V_C').AsString);
AdoQuery1.Next;
end;
ComboBox1.ItemIndex := 0;
ComboBox1.Text:='';
AdoQuery1.Close;
возможно как то создать филтр по полю Flag,
поле flag типа boolean бд access ?

Последний раз редактировалось Stilet; 10.12.2011 в 19:04.
Seva2011 вне форума Ответить с цитированием
Старый 09.12.2011, 21:20   #9
alexiz
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Seva2011 Посмотреть сообщение
возможно как то создать фильтр по полю Flag,
поле flag типа boolean бд access?
Разумеется! В Ваших руках SQL, Вы все можете.
ЗЫ Чё то смущает меня вторая строка снизу у Вас ComboBox1.Text:='';
Это зачем?
Ваша благодарность может быть материальной:
WM R103871054215, WM Z710411027344, ЯндД: 410011167596676
alexiz вне форума Ответить с цитированием
Старый 10.12.2011, 10:14   #10
Seva2011
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 31
По умолчанию

Это для того чтоб в комбобоксе при открытии формы не не стояло значения выбранной в прошлый раз)
в sql сделать етот фильтр не сложно а вот в дельфи никак не получается я так понимаю что код должен быть примерно такой
Цитата:
ComboBox5.Items.Clear;
AdoQuery1.Open;
while not AdoQuery1.Eof do
begin
ComboBox5.Items.Add(AdoQuery1.Field ByName('id WHERE flag=true').AsString);
AdoQuery1.Next;
end;
ComboBox5.ItemIndex := 0;
ComboBox5.Text:='';
AdoQuery1.Close;
но это неправильно. поскажи как правильно выполнить запрос плиизззз!
Seva2011 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
значения аргументов функции по умолчанию TomaZ Общие вопросы C/C++ 2 20.09.2011 18:09
Задать ItemIndex-y свои значения. Detka.i.alex Помощь студентам 2 13.04.2011 14:11
В зависимости от значения в ComboBox1 выводить значения в ComboBox2 LeX2009 БД в Delphi 14 21.05.2010 16:49
Установка значения по умолчанию ЮляНик БД в Delphi 1 01.01.2009 02:15
значения по умолчанию azat БД в Delphi 5 11.12.2007 15:56