|
Вопрос # 4 622/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Есть форма на ней расположены кнопка, stringgrid, combobox. Надо сделать так чтобы при выборе в combobox название акции и нажатии на кнопку в таблице показывала даные по участникам в акции. Помогите пожалуйста.
Приложение: Переключить в обычный режим- unit Unit3;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, DBXpress, FMTBcd, DB, SqlExpr, Grids, StdCtrls;
-
- type
- TForm3 = class(TForm)
- StringGrid3: TStringGrid;
- SQLConnection1: TSQLConnection;
- Q3: TSQLQuery;
- Button1: TButton;
- ComboBox1: TComboBox;
- procedure FormActivate(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure ComboBox1Change(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form3: TForm3;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm3.FormActivate(Sender: TObject);
- var d:integer;
- begin
- try
- Q3.Open;
- except
- on e:exception do showmessage(e.Message)
- end;
- stringgrid3.Visible:=false;
- stringgrid3.RowCount:=2;
- d:=1;
-
- while not Q3.Eof do
- begin
-
-
-
-
- stringgrid3.Cells[0,d]:=Q3.fields[0].AsString;
- stringgrid3.Cells[1,d]:=Q3.fields[1].AsString;
-
-
- Q3.Next;
- inc(d);
- stringgrid3.RowCount:=d+2;
- end;
- stringgrid3.Visible:=true;
- if Q3.Active then Q3.Close;
-
-
- combobox1.Clear;
- Form3.Q3.SQL.Text:='select name from act_new';
- Form3.Q3.Open;
- if Form3.Q3.Active then
- begin
- Form3.Q3.First;
- while not q3.Eof do
- BEGIN
- Form3.ComboBox1.Items.Add(Form3.Q3. FieldByName('name').AsString);
- Form3.Q3.Next;
- END;
- q3.Close;
-
-
- end;
- end;
-
- procedure TForm3.Button1Click(Sender: TObject);
- begin
- q3.SQL.Text:='select card_number, act_0 from spiski where name='+inttostr(combobox1.ItemIndex )+'';
- q3.Close;
- end;
-
- procedure TForm3.ComboBox1Change(Sender: TObject);
- begin
- q3.SQL.Text:='select card_number, act_'+inttostr(combobox1.ItemIndex) +' from spiski where
act_'+inttostr(combobox1.ItemIndex) +'=1';
- q3.Open;
-
- end;
-
- end.
-
 |
Вопрос задал: slai (статус: Посетитель)
Вопрос отправлен: 30 сентября 2010, 09:30
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 30 сентября 2010, 10:12; участников в обсуждении: 1.
|
AlexMPEI (статус: 1-ый класс), 30 сентября 2010, 10:12 [#1]:
в procedure TForm3.ComboBox1Change(Sender: TObject); после Опен надо добавить заполнение грида:
var
count: integer;
count := 0;
while not q3.eof do
begin
stringgrid3.Cells[0, count] := ADOQuery2.Fields.Fields[0].AsString;
stringgrid3.Cells[1, count] := ADOQuery2.Fields.Fields[1].AsString;
stringgrid3.Cells[2, count] := ADOQuery2.Fields.Fields[2].AsString;
stringgrid3.Cells[3, count] := ADOQuery2.Fields.Fields[3].AsString;
stringgrid3.Cells[4, count] := ADOQuery2.Fields.Fields[4].AsString;
stringgrid3.Cells[5, count] := ADOQuery2.Fields.Fields[5].AsString;
........
count := count + 1;
q3.next;
end;
|
30 сентября 2010, 19:51: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Программирование баз данных (БД) модератором Ерёмин А.А.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|