Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использавание DBLookupCombobox 
:(
    Опции темы
lansel
Дата 2.3.2006, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 3.1.2006

Репутация: нет
Всего: нет



Расскажите как пользоваться DBLookupCombobox!!!
1) как его правильно подключать ( я использую Query)
2) как он прописывается в самой проге.
Вот насколько я помню простой Combobox ( я его редко использовала) прописывали типа так
Combobox1->Imes->Add(....)

А про DBLookupCombobox я вообще не чего не знаю!!!


PM MAIL   Вверх
Vyacheslav
Дата 2.3.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Очень просто. Вы должны иметь две таблицы, имеющие связь один ко многим. Например таблица CityTable -справочнк городов, таблица 2 - AddressTable
CityTable имеет два поля -ID - код города, Name - название города
В AddressTable имется поле - CityID - код города.
Стоит задача: добавить новую запись AddressTable, дав возможность пользователю использовать не код,а наименование города.
Бросаете на форму DBLookupCombobox
Указываете для DataField - AddressTableCityID;
для DataSource - DataSource, который ссылается на AddressTable
для KeyField = CityTableID
для ListField CityTableName;
для ListIndex индекс по ID для таблицы CityTable
для ListSource DataSource, который ссылается на CityTable

После этого пользователь будет из списка выбирать город, а CityID будет записываться его индекс






--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Дося
Дата 3.3.2006, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 15.2.2006

Репутация: нет
Всего: нет



А можно связать между собой два DBLookupCombobox?
Мне надо, к примеру, выбрав в первом DBLookupCombobox значение X, во втором можно было выбирать значения X1, X2, X3, ... . Выбрав в первом DBLookupCombobox значение Y, во втором можно было выбирать значения Y1, Y2, Y3, ... . Это возможно? smile
PM MAIL   Вверх
lansel
Дата 5.3.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 3.1.2006

Репутация: нет
Всего: нет



Цитата(Vyacheslav @ 2.3.2006, 10:41)
для ListIndex индекс по ID для таблицы  CityTable
                   

Спасибо, почти работает.
Может ты про ListFieldIndex -а для чего он нужен? там по умолчанию стоит ноль....

Посмотрите пожалуйста, где ошибка, у меня не дабовляется запись через ComboBox, т.е добавляется только самая первая которая стоит в списке, не зависимо на которую я нажимала...smile

Код

 // добавить запись о товаре
void __fastcall TForm1::N9Click(TObject *Sender)
{
  int t=Form2->Query1->FieldByName("Id_Firm")->AsInteger;
  Form2->IsGoods = true;
  Form2->Button1->Caption = "Добавить";
  Form2->LabeledEdit1->EditLabel->Caption = "Название товара";
  Form2->LabeledEdit2->EditLabel->Caption = "Вес товара (г)";
  Form2->LabeledEdit3->EditLabel->Caption = "Цена ($)";
  Form2->LabeledEdit4->EditLabel->Caption = "Фокусное расстояние (мм)";
 //Form2->LabeledEdit5->EditLabel->Caption = "Идентификатор фирмы";
  Form2->LabeledEdit3->Visible = true;
  Form2->LabeledEdit4->Visible = true;
  //Form2->LabeledEdit5->Visible = true;
  Form2->Caption = "Добавить запись о товаре";
  Form2->ShowModal();
  flag = ((GMarka=="")||(GWeight=="")||(GPrice=="")||(GFokus=="")||(GId_Firm)=="");
  if (!flag)
  {
    SQL = "SELECT * FROM GoodsTable WHERE Marka=:GMarka AND Weight=:GWeight AND Price=:GPrice AND Fokus=:GFokus AND Firm_id=:GId_Firm";
    Query2->Close();
    Query2->SQL->Clear();
    Query2->SQL->Add(SQL);
    Query2->ParamByName("GMarka")->AsString = GMarka;
    Query2->ParamByName("GWeight")->AsFloat = StrToFloat(GWeight);
    Query2->ParamByName("GPrice")->AsFloat = StrToFloat(GPrice);
    Query2->ParamByName("GFokus")->AsFloat = StrToFloat(GFokus);
    Query2->ParamByName("GId_Firm")->AsInteger = t;
    Query2->Open();
    if (Query2->IsEmpty())
    {
      SQL = "INSERT INTO GoodsTable (Marka,Weight,Price,Fokus,Firm_id) VALUES (:GMarka,:GWeight,:GPrice,:GFokus,:GId_Firm)";
      Query2->Close();
      Query2->SQL->Clear();
      Query2->SQL->Add(SQL);
      Query2->ParamByName("GMarka")->AsString = GMarka;
      Query2->ParamByName("GWeight")->AsFloat = StrToFloat(GWeight);
      Query2->ParamByName("GPrice")->AsFloat = StrToFloat(GPrice);
      Query2->ParamByName("GFokus")->AsFloat = StrToFloat(GFokus);
      Query2->ParamByName("GId_Firm")->AsInteger =t;
      Query2->ExecSQL();
    }
    else
      Application->MessageBoxA("Такая запись уже есть","Ошибка",
        MB_OK+MB_ICONWARNING);
  }
  Query1->Close();
 Query1->SQL->Clear();
  Query1->SQL->Add("SELECT G.Marka,G.Weight,G.Price,G.Fokus,G.Goods_id,F.Id_Firm,F.Name,F.Address   FROM FirmTable F, GoodsTable G WHERE F.id_Firm = G.Firm_id ORDER BY G.Marka");
  Query1->Open();
   Form2->LabeledEdit1->Text="";
  Form2->LabeledEdit2->Text="";
   Form2->LabeledEdit3->Text="";
  Form2->LabeledEdit4->Text="";
}



Код

//Добавить запись
void __fastcall TForm2::Button1Click(TObject *Sender)
{
  if (IsGoods)  // если добавляем информацию о товаре
    {
      Form1->GMarka = LabeledEdit1->Text;
      Form1->GWeight = LabeledEdit2->Text;
      Form1->GPrice = LabeledEdit3->Text;
      Form1->GFokus = LabeledEdit4->Text;
      Form1->GId_Firm = DBLookupComboBox1->Text;

    }
  else     // т.е. если добавляем информацию о фирме
  {
    Form1->FName = LabeledEdit1->Text;
    Form1->FAddress = LabeledEdit2->Text;
  }
 Close();
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.