Показать сообщение отдельно
  #10  
Старый 23.05.2008, 21:41
Жулик Жулик вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 21
Репутация: 5
По умолчанию

Цитата:
Сообщение от lmikle
Не подойдет?
Вместо строковой константы можно использовать параметр.

только надо учесть, что ID второй таблицы должен быть уникален (фактически, будет лучше всего, если он будет первичным ключем), иначе запрос будет ругаться.

Подставил запрос предложениый тобой...

при выполнении запроса ругается на параметр :
"ADOQuery4:Parameter 'f' not found"

не могу понять что ему не нравится

Если что вот код:
Код:
procedure TForm4.FormCreate(Sender: TObject);
begin

    with ADOQuery1 do begin
         Close;
         SQL.Clear;
         SQL.Add('SELECT p.data, s.code_s, p.Code_p, s.Gruppa, s.Familia, s.Ima, s.Ochestvo, p.vid_Propuska, p.Kol_vo_chas' );
         SQL.Add('FROM stud s, propuski p');
         SQL.Add('WHERE s.code_s = p.code_s');
         SQL.Add('ORDER BY s.familia');
         Open;
     end;


     with ADOQuery2 do begin
         Close;
         SQL.Clear;
         SQL.Add('SELECT Familia FROM stud');
         SQL.Add('ORDER BY Familia');
         Open;
     end;
     ADOQuery2.First;
     While not ADOQuery2.Eof do begin
        ComboBox1.Items.Add(ADOQuery2.Fields[0].AsString);
        ADOQuery2.Next;
     end;
     
//---------------------------------------
     
     with ADOQuery3 do begin
         Close;
         SQL.Clear;
         SQL.Add('SELECT Gruppa FROM grupp');
         SQL.Add('ORDER BY Gruppa');
         Open;
     end;
     ADOQuery3.First;
     While not ADOQuery3.Eof do begin
        ComboBox2.Items.Add(ADOQuery3.Fields[0].AsString);
        ADOQuery3.Next;
     end;


end;


procedure TForm4.Button1Click(Sender: TObject);
begin
  with ADOQuery4 do begin
       Close;
       SQL.Clear;
       SQL.Add('INSERT INTO propuski ( code_s, Data, Vid_propuska, Kol_vo_chas )');
       SQL.Add('VALUES  ( (SELECT Code_s FROM stud WHERE Familia = f ), :d, :v, :k)');

      
       Parameters.ParseSQL(SQL.Text,true);
       Parameters.ParamByName('v').Value:= ComboBox3.Text;         //вид пропуска
       Parameters.ParamByName('d').Value:= DateTimePicker1.Date;   //дата
       Parameters.ParamByName('k').Value:= Edit1.Text;             //количеставо часов
       Parameters.ParamByName('f').Value:= ComboBox1.Text;          //фамилия
       ExecSQL;

  end;

     with ADOQuery1 do begin
         Close;
         SQL.Clear;
         SQL.Add('SELECT p.data, s.code_s, p.Code_p, s.Gruppa, s.Familia, s.Ima, s.Ochestvo, p.vid_Propuska, p.Kol_vo_chas' );
         SQL.Add('FROM stud s, propuski p');
         SQL.Add('WHERE s.code_s = p.code_s');
         SQL.Add('AND p.Data    = :d');
         SQL.Add('AND s.familia = :f');
         SQL.Add('ORDER BY s.familia');
         Parameters.ParseSQL(SQL.Text,true);
         Parameters.ParamByName('d').Value:= DateTimePicker1.Date;
         Parameters.ParamByName('f').Value:= ComboBox1.Text;
         Open;
     end;
     
end;

procedure TForm4.ComboBox1Enter(Sender: TObject);    //фамилия
  Var i:integer;
begin
   With ADOQuery5 do begin
       Close;
       SQL.Clear;
       SQL.Add('SELECT DISTINCT familia FROM stud');
       SQL.Add('WHERE Gruppa  LIKE '+quotedStr(ComboBox2.Text));
       SQL.Add('ORDER by familia');
       Open;
   end;
   ADOQuery5.First;
   ComboBox1.Items.Clear;
   While not ADOQuery5.eof do        //Заполняем ComboBox1
   begin
      ComboBox1.Items.Add(ADOQuery5.Fields[0].AsString);
      ADOQuery5.Next;
   end;

end;

procedure TForm4.Button2Click(Sender: TObject);   //показ всех пропусков
Var i:integer;
begin
   with ADOQuery1 do begin
         Close;
         SQL.Clear;
         SQL.Add('SELECT p.data, s.code_s, p.Code_p, s.Gruppa, s.Familia, s.Ima, s.Ochestvo, p.vid_Propuska, p.Kol_vo_chas' );
         SQL.Add('FROM stud s, propuski p');
         SQL.Add('WHERE s.code_s = p.code_s');
         SQL.Add('ORDER BY s.familia, p.Date');
         Open;
     end;

end;

procedure TForm4.DateTimePicker1CloseUp(Sender: TObject);  //календарь

begin
   with ADOQuery1 do begin
         Close;
         SQL.Clear;
         SQL.Add('SELECT p.data, s.code_s, p.Code_p, s.Gruppa, s.Familia, s.Ima, s.Ochestvo, p.vid_Propuska, p.Kol_vo_chas' );
         SQL.Add('FROM stud s, propuski p');
         SQL.Add('WHERE s.code_s = p.code_s');
         SQL.Add('AND p.Data    = :d');
         SQL.Add('ORDER BY s.familia');
         Parameters.ParseSQL(SQL.Text,true);
         Parameters.ParamByName('d').Value:= DateTimePicker1.Date;
         Open;
     end;

end;

Кто знает в чем ошибка, помогите Пажалуйста!
Ответить с цитированием