Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 622

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Есть форма на ней расположены кнопка, stringgrid, combobox. Надо сделать так чтобы при выборе в combobox название акции и нажатии на кнопку в таблице показывала даные по участникам в акции. Помогите пожалуйста.

Приложение:
  1. unit Unit3;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, DBXpress, FMTBcd, DB, SqlExpr, Grids, StdCtrls;
  8.  
  9. type
  10. TForm3 = class(TForm)
  11. StringGrid3: TStringGrid;
  12. SQLConnection1: TSQLConnection;
  13. Q3: TSQLQuery;
  14. Button1: TButton;
  15. ComboBox1: TComboBox;
  16. procedure FormActivate(Sender: TObject);
  17. procedure Button1Click(Sender: TObject);
  18. procedure ComboBox1Change(Sender: TObject);
  19. private
  20. { Private declarations }
  21. public
  22. { Public declarations }
  23. end;
  24.  
  25. var
  26. Form3: TForm3;
  27.  
  28. implementation
  29.  
  30. {$R *.dfm}
  31.  
  32. procedure TForm3.FormActivate(Sender: TObject);
  33. var d:integer;
  34. begin
  35. try
  36. Q3.Open;
  37. except
  38. on e:exception do showmessage(e.Message)
  39. end;
  40. stringgrid3.Visible:=false;
  41. stringgrid3.RowCount:=2;
  42. d:=1;
  43.  
  44. while not Q3.Eof do
  45. begin
  46.  
  47.  
  48.  
  49.  
  50. stringgrid3.Cells[0,d]:=Q3.fields[0].AsString;
  51. stringgrid3.Cells[1,d]:=Q3.fields[1].AsString;
  52.  
  53.  
  54. Q3.Next;
  55. inc(d);
  56. stringgrid3.RowCount:=d+2;
  57. end;
  58. stringgrid3.Visible:=true;
  59. if Q3.Active then Q3.Close;
  60.  
  61.  
  62. combobox1.Clear;
  63. Form3.Q3.SQL.Text:='select name from act_new';
  64. Form3.Q3.Open;
  65. if Form3.Q3.Active then
  66. begin
  67. Form3.Q3.First;
  68. while not q3.Eof do
  69. BEGIN
  70. Form3.ComboBox1.Items.Add(Form3.Q3. FieldByName('name').AsString);
  71. Form3.Q3.Next;
  72. END;
  73. q3.Close;
  74.  
  75.  
  76. end;
  77. end;
  78.  
  79. procedure TForm3.Button1Click(Sender: TObject);
  80. begin
  81. q3.SQL.Text:='select card_number, act_0 from spiski where name='+inttostr(combobox1.ItemIndex )+'';
  82. q3.Close;
  83. end;
  84.  
  85. procedure TForm3.ComboBox1Change(Sender: TObject);
  86. begin
  87. q3.SQL.Text:='select card_number, act_'+inttostr(combobox1.ItemIndex) +' from spiski where act_'+inttostr(combobox1.ItemIndex) +'=1';
  88. q3.Open;
  89.  
  90. end;
  91.  
  92. end.
  93.  


slai Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: slai (статус: Посетитель)
Вопрос отправлен: 30 сентября 2010, 09:30
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 30 сентября 2010, 10:12; участников в обсуждении: 1.
AlexMPEI

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 » Программирование баз данных (БД) модератором Ерёмин А.А.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:50
Выполнено за 0.02 сек.