Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.11.2012, 10:48
kobz kobz вне форума
Прохожий
 
Регистрация: 08.06.2012
Сообщения: 12
Репутация: 10
По умолчанию SQL запрос

Доброго всем времени суток!
Бьюсь над решением следующей задачи, но пока, что-то ничего не получается. Есть база данных, состоящая из двух таблиц: NAME и STEP (см. вложения) Связь м/у табл. по полям IndexName и IndexName1.
Вот код с которым работаю:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    procedure FormActivate(Sender: TObject);
    procedure ComboBox1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  type
     TINDEX = class
     INDEX: integer;
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
with unit2.DataModule2.ADOQuery1 do
begin
    unit2.DataModule2.ADOQuery1.Active:= False;
    unit2.DataModule2.ADOQuery1.SQL.Clear;
    unit2.DataModule2.ADOQuery1.SQL.Add('select * from name, step');
    unit2.DataModule2.ADOQuery1.SQL.Add('where name = combobox1.Text');
    unit2.DataModule2.AdoQuery1.Parameters[0].AsInteger := TCod(ComboBox.Items.Objects[ComboBox.ItemIndex]).Cod;
    unit2.DataModule2.ADOQuery1.Active:= True;
combobox2.Items.Clear;
while not unit2.DataModule2.ADOQuery1.Eof do begin
combobox2.Items.Add(unit2.DataModule2.AdoQuery1.FieldByName('step').AsString);
unit2.DataModule2.ADOQuery1.Next;
end;

end;
end;

procedure TForm1.ComboBox1Click(Sender: TObject);
begin
 ComboBox2.SetFocus;
end;

procedure TForm1.FormActivate(Sender: TObject);
const
ADOProvider='Provider=Microsoft.Jet.OLEDB.4.0; Data Source=';
var
 path:string;
PINDEX: TINDEX;
begin
   Path:=Application.ExeName;
   Path:=ExtractFileDir(Path);
   if Path[Length(Path)]<>'\' then Path:=Path+'\'+'DataBase'+'\';
unit2.DataModule2.ADOConnection1.ConnectionString:=ADOProvider+Path+'Base.mdb';
unit2.DataModule2.ADOConnection1.Open;
unit2.DataModule2.ADOTable1.Active:=True;
  ComboBox1.Items.Clear;
  unit2.DataModule2.ADOTable1.First;
   while not unit2.DataModule2.ADOTable1.EOF do
begin
    PINDEX := TINDEX.Create;
    PINDEX.INDEX := unit2.DataModule2.ADOTable1.FieldByName('IndexName').AsInteger;
ComboBox1.Items.AddObject(unit2.DataModule2.ADOTable1.FieldByName('Name').AsString, PINDEX);
unit2.DataModule2.ADOTable1.Next;
end;
if (combobox1.Items.Count > 0) then Combobox1.ItemIndex := 0;
end;

end.
Так вот, проблема именно в SQL запросе, выбор в combo1 строки с нужным значением, должен подгружать соответствующие значения в combo2. как связать индекс combo1 с табл. step и т.д. Помогите пожалуйста разобраться с запросом.
Спасибо.
Изображения
Тип файла: jpg Tabl Name.JPG (23.3 Кбайт, 14 просмотров)
Тип файла: jpg Tabl Step.JPG (47.9 Кбайт, 11 просмотров)

Последний раз редактировалось kobz, 26.11.2012 в 10:53.
Ответить с цитированием
  #2  
Старый 17.12.2012, 11:18
kobz kobz вне форума
Прохожий
 
Регистрация: 08.06.2012
Сообщения: 12
Репутация: 10
По умолчанию

Неужели никто не может помочь, подсказать???
Ответить с цитированием
  #3  
Старый 17.12.2012, 11:31
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

1. почему именно ComboBox, а не DBLookupComboBox ?
2. запрос должен быть примерно таков:
Код:
Query.SQL.Text:='SELECT * FROM step WHERE IndexName1 = :p_index';
Query.ParamByName('p_index').asInteger := <значение>;
Query.Open;
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter