Eu executo meu programa e consigo efetuar um INSERT no banco normalmente, mas se caso eu quiser inserir outro automaticamente aparece a seguinte mensagem:
QueryControle: CommandText does not return a result set.
Mas os dados são gravados no banco de dados....
Já tentei de tudo.....mas não obtive sucesso.....
Eu estou ativando a conexão no OnCreate do dataModule.
Será que alguém pode me ajudar ???
Este é o código:
Resunindo eu verifico se existe o usuário e logo em seguida verifico se ele está voltando ou indo almoçar.....trata-se de um controle de almoço......
procedure TfmPrincipal.btnokClick(Sender: TObject);
var v_chapa, v_senha : String;
var v_data, v_hora : TdateTime;
begin
v_chapa := Edit1.Text;
v_senha := Edit2.Text;
v_data := strtodate(FormatDateTime('dd/mm/yyyy',Data));
v_hora := strtotime(FormatDateTime('hh:mm:ss',Data));
if ((Edit1.Text = '') or (Edit2.Text = '')) then
begin
Messagedlg('Digite a chapa e senha.'+#13#13+'>>Caso não esteja cadastrado consulte seu supervisor.',mtInformation,[mbOK],0);
Edit2.setFocus;
abort;
end;
if not (DM.QueryUsuario.Active = true) then
begin
DM.QueryUsuario.Active := true
end;
if not (DM.QueryControle.Active = true) then
begin
DM.QueryControle.Active := true;
end;
if DM.QueryUsuario.Locate('Chapa;Senha', VarArrayOf ([v_chapa, v_senha]), []) then
begin
if not DM.QueryControle.Locate('Data;Chapa', VarArrayof ([v_data, v_chapa]),[]) then
begin
Messagedlg('Você está saindo.Grava os dados em saída',mtInformation,[mbOK],0);
DM.QueryControle.Close;
DM.QueryControle.SQL.Clear;
DM.QueryControle.SQL.Add('INSERT INTO Controle (Data, Chapa, HoraSaida) VALUES (:data,:chapa,:saida)');
DM.QueryControle.Parameters.ParamByName('data').Value:= v_data;
DM.QueryControle.Parameters.ParamByName('chapa').Value:= v_chapa;
DM.QueryControle.Parameters.ParamByName('saida').Value:= v_hora;
DM.QueryControle.ExecSQL;
Edit1.Clear;
Edit2.Clear;
Edit1.SetFocus;
end
else begin
if DM.QueryControleHoraVolta.IsNull then
begin
Messagedlg('Você está voltando. Grava os dados em Volta',mtInformation,[mbOK],0);
DM.QueryControle.Close;
DM.QueryControle.SQL.Clear;
DM.QueryControle.SQL.Add('UPDATE Controle SET HoraVolta = :volta WHERE Data = :data AND Chapa = :chapa');
DM.QueryControle.Parameters.ParamByName('data').Value:= v_data;
DM.QueryControle.Parameters.ParamByName('chapa').Value:= v_chapa;
DM.QueryControle.Parameters.ParamByName('volta').Value:= v_hora;
DM.QueryControle.ExecSQL;
Edit1.Clear;
Edit2.Clear;
Edit1.SetFocus;
end
else begin
Messagedlg('Você já excedeu o número de batidas hoje.',mtInformation,[mbOK],0);
abort;
end;
end;
end
else begin
Messagedlg('O Chapa ou Senha inválido!',mtError,[mbOK],0);
Edit2.Clear;
Edit2.SetFocus;
abort;
end
end;
Pergunta
Alessandro
Tenho o seguinte problema :
Eu executo meu programa e consigo efetuar um INSERT no banco normalmente, mas se caso eu quiser inserir outro automaticamente aparece a seguinte mensagem:
QueryControle: CommandText does not return a result set.
Mas os dados são gravados no banco de dados....
Já tentei de tudo.....mas não obtive sucesso.....
Eu estou ativando a conexão no OnCreate do dataModule.
Será que alguém pode me ajudar ???
Este é o código:
Resunindo eu verifico se existe o usuário e logo em seguida verifico se ele está voltando ou indo almoçar.....trata-se de um controle de almoço......
procedure TfmPrincipal.btnokClick(Sender: TObject); var v_chapa, v_senha : String; var v_data, v_hora : TdateTime; begin v_chapa := Edit1.Text; v_senha := Edit2.Text; v_data := strtodate(FormatDateTime('dd/mm/yyyy',Data)); v_hora := strtotime(FormatDateTime('hh:mm:ss',Data)); if ((Edit1.Text = '') or (Edit2.Text = '')) then begin Messagedlg('Digite a chapa e senha.'+#13#13+'>>Caso não esteja cadastrado consulte seu supervisor.',mtInformation,[mbOK],0); Edit2.setFocus; abort; end; if not (DM.QueryUsuario.Active = true) then begin DM.QueryUsuario.Active := true end; if not (DM.QueryControle.Active = true) then begin DM.QueryControle.Active := true; end; if DM.QueryUsuario.Locate('Chapa;Senha', VarArrayOf ([v_chapa, v_senha]), []) then begin if not DM.QueryControle.Locate('Data;Chapa', VarArrayof ([v_data, v_chapa]),[]) then begin Messagedlg('Você está saindo.Grava os dados em saída',mtInformation,[mbOK],0); DM.QueryControle.Close; DM.QueryControle.SQL.Clear; DM.QueryControle.SQL.Add('INSERT INTO Controle (Data, Chapa, HoraSaida) VALUES (:data,:chapa,:saida)'); DM.QueryControle.Parameters.ParamByName('data').Value:= v_data; DM.QueryControle.Parameters.ParamByName('chapa').Value:= v_chapa; DM.QueryControle.Parameters.ParamByName('saida').Value:= v_hora; DM.QueryControle.ExecSQL; Edit1.Clear; Edit2.Clear; Edit1.SetFocus; end else begin if DM.QueryControleHoraVolta.IsNull then begin Messagedlg('Você está voltando. Grava os dados em Volta',mtInformation,[mbOK],0); DM.QueryControle.Close; DM.QueryControle.SQL.Clear; DM.QueryControle.SQL.Add('UPDATE Controle SET HoraVolta = :volta WHERE Data = :data AND Chapa = :chapa'); DM.QueryControle.Parameters.ParamByName('data').Value:= v_data; DM.QueryControle.Parameters.ParamByName('chapa').Value:= v_chapa; DM.QueryControle.Parameters.ParamByName('volta').Value:= v_hora; DM.QueryControle.ExecSQL; Edit1.Clear; Edit2.Clear; Edit1.SetFocus; end else begin Messagedlg('Você já excedeu o número de batidas hoje.',mtInformation,[mbOK],0); abort; end; end; end else begin Messagedlg('O Chapa ou Senha inválido!',mtError,[mbOK],0); Edit2.Clear; Edit2.SetFocus; abort; end end;Obrigado.....
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados