Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DBComboBox не видит структуру таблицы, DBComboBox не видит структуру таблицы 
:(
    Опции темы
Shokan
Дата 10.5.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не в этом дело.
само структура таблицы departement такая.
та толко два поле под именами 1 и 2


PM MAIL   Вверх
Rodman
Дата 10.5.2007, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(Shokan @  10.5.2007,  12:15 Найти цитируемый пост)
под именами 1 и 2

арегинальные имя полей... переименуй их на Name1, Name2.. из-за имен тоже могут быть ошибки...

скажешь результат...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Shokan
Дата 10.5.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я переименовал имена  полей в таблице Depaterments на id(number) & name(text)

вложил этот код

Код

var a: Cardinal;
begin
  for a:=1 to ADOQuery2.RecordCount do
begin
  DBComboBox1.Items.Add(ADOQuery2.Fields[2].AsString);
  ADOQuery2.next;
end;
     end;


но... опять smile 
выходит только самая первая строка этого толя, гребанный 
Административный департамент
ихвеняюсь за выражения

PM MAIL   Вверх
Rodman
Дата 10.5.2007, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



так... бедь терпимее... во первый ты открываешь запрос далеко..

напиши...
Код

procedure TForm1.DBComboBox1Change(Sender: TObject);
begin
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('SELECT ID, Name1 FROM Depaterments ;');
adoquery2.Open;
while not adoquery2.Eof do
begin
     ComboBox1.Items.Add(ADOQuery2.Fields[1].AsString); //обычный комбобокс попробуй
     ADOQuery2.next; 
end;


вот такой код все что надо выведет...

иначе вылажуй базу и исходник - гляну...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Shokan
Дата 11.5.2007, 05:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот --->

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  tel.rar 51,75 Kb
PM MAIL   Вверх
Shokan
Дата 11.5.2007, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вот исходник программы

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  123.rar 84,76 Kb
PM MAIL   Вверх
Rodman
Дата 11.5.2007, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(Shokan @  10.5.2007,  13:23 Найти цитируемый пост)
id(number) & name(text)

Name - зарезервированное слово (тебя аксесс должен был предупредить), а в таком случае его нужно брать в [name]

PS: никогда не называй поля одним словом... используй динный названия, типа - NameUser или FIOName...

Код

procedure TForm1.FormCreate(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('SELECT Departments.id, Departments.name FROM Departments;');
adoquery1.Open;
while not adoquery1.Eof do
begin
     DBComboBox1.Items.Add(ADOQuery1.Fields[1].AsString); 
     ADOQuery1.next;
end;
end;

вот этот код у меня вывел все.

только внимательно его прочитай, заполнение в создании формы висит...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Shokan
Дата 11.5.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



все заработала!
спасибо большое. дело не в комбо боксе, оказывается в adoquery.
не знаю теперь... в пхп есть форма:
Код

<select name=depart>
<option>Адм. блок
<option>Фин. блок
<option>Тех. блок
</select>


и берешь значении выбранного так скажем Selecta

Код

$depart = $_post['depart'];
$sql = 'select * from Personal where depottament_id=$depart';


как на дельфи все это проиходит?
я сам решил вот так:
при выборке сразу же брать значения комбо бокса и вставлять его переменным
в sql запрос другого ADOQuery(через который подключается dbgrid) что бы у меня при выборке люди выберались с того департамента. правильно ли размышляю? как дальше с синтаксисом помогите



Код

procedure TForm1.FormCreate(Sender: TObject);
begin
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('SELECT Departments.id, Departments.name FROM Departments;');
adoquery2.Open;
while not adoquery2.Eof do
begin
DBComboBox1.Items.Add(ADOQuery2.Fields[1].AsString);
     ADOQuery2.next;
end;

adoquery1.Close;
adoquery1.SQL.Clear;
??????????????????????
adoquery1.Open;
end;



PM MAIL   Вверх
Rodman
Дата 11.5.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Код

procedure TForm1.DBComboBox1Change(Sender: TObject);
begin
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Add('select * from Departments where Departments.name=:Prm1');
    adoquery1.ParamByname('Prm1').Value:=DBComboBox1.Text;
    adoquery1.Open;
   //если связи прописаны выведется в DBGrid
end;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Shokan
Дата 11.5.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Извеняюсь за тупизм: smile 
Код

 adoquery1.SQL.Add('select * from Departments where Departments.name=:Prm1');


Prm1 откуда передается?
а оператор ParamByname он вообще не определяет

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


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(Shokan @  11.5.2007,  12:21 Найти цитируемый пост)
Prm1 откуда передается?

это и есть твой параметр...

подобный твоему $depart...
Код

adoquery1.ParamByname('Prm1').Value:=//присваиваешь нужное значение

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Shokan
Дата 14.5.2007, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здраствуйте! мой следующий вопрос не подходит к теме, но я продолжаю что бы была лутче понятна сетуация моих вопросов.
DBComboBox1.Text- у меня выдодится названия(name) а не Id. можно ли сделать какое то скрытое поле для передачи параметра?
потому что в таблице Personal значения Department переданы через Id.
вышепоказанном коду дельфи ругается на эту строку:

  adoquery1.ParamByname('Department.Id').Value:=DBComboBox1.Text;
......
  //[Error] Unit1.pas(122): Undeclared identifier: 'ParamByname'
  //[Error] Unit1.pas(122): Missing operator or semicolon

вроде все нормально?
или их надо заранее задать на свойствах  adoquery1 в Object inspector-e?

PM MAIL   Вверх
Rodman
Дата 14.5.2007, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Shokan, запрос из adoquery1 в студию...

Добавлено через 10 минут и 40 секунд
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('SELECT Departments.id, Departments.name FROM Departments;');
adoquery2.Open;
while not adoquery2.Eof do
begin
     ComboBox1.Items.AddObject(ADOQuery2.Fields[1].AsString, Pointer(ADOQuery2.Fields[0].AsInteger));
     ADOQuery2.next;
end;
end;


а потом передавать запросу
Код

SELECT ID,[name] from Department WHERE id=:Prm1;


Код

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  adoquery1.Close;
  adoquery1.ParamByname('Prm1').Value:=integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);//передаст ID
  adoquery1.Open;
end;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Shokan
Дата 14.5.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



все. вроде бы решил.
поставил DBLookupComboBox1 в место комбобокса
прописал следуюшее 

Код

procedure TForm1.DBLookupComboBox1CloseUp(Sender: TObject);
begin
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Add('select * from Personal where Department=:par1');
    adoquery1.Parameters.ParamByName('par1').Value:=DBLookupComboBox1.KeyValue;
    adoquery1.Open;
end;


PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


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

FAQ раздела лежит здесь!


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

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


 




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


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

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