Fórum Ajuda com consulta usando DBExpress #415153
09/04/2012
0
procedure TfrmCadPadrao.RegistrosBloqueadosparauso1Click(Sender: TObject); var qry: TSQLQuery; begin qry.Close; qry.CommandText:= SELECT * FROM + nomeTabela + WHERE ATIVO_ + sufixoTabela + = + #39 + N + #39; qry.Open; end;
Esta é a forma correta? Ou estou errando em algo.
Estou usando Delphi XE, Firebird 2.1 e DBExpress (Trio de ferro....kkk)
Obs: nomeTabela e sufixoTabela passo os parâmetros no Active do Form.
sufixoTabela:= TES; nomeTabela:= TESTE; nomeJanela:= CADASTRO TESTE;
Mesmo tirando eles para teste, não faz a consulta.
Adilson Rumao
Curtir tópico
+ 0Posts
09/04/2012
Bruno Leandro
procedure TfrmCadPadrao.RegistrosBloqueadosparauso1Click(Sender: TObject);
var
qry: TSQLQuery;
begin
qry := TSQLQuery.Create(nil);
qry.SQLConnection := SQLConnection1;
qry.Close;
qry.CommandText:= SELECT * FROM + nomeTabela + WHERE ATIVO_ + sufixoTabela + = + #39 + QuotedStr(N) + #39;
qry.Open;
end;
Gostei + 0
09/04/2012
Joel Rodrigues
qry := TSQLQuery.Create(Self);
Antes disso, a query não existe, deve acusar um erro de AccessViolation.
Boa sorte.
Gostei + 0
09/04/2012
Adilson Rumao
Se uso com self:
procedure TfrmCadPadrao.RegistrosBloqueadosparauso1Click(Sender: TObject); var qry: TSQLQuery; begin qry:= TSQLQuery.Create(self); qry.SQLConnection:= DM.SQLConexao; qry.Close; qry.CommandText:= SELECT * FROM + nomeTabela + WHERE ATIVO_ + sufixoTabela + = + #39 + N + #39; qry.Open; DS.DataSet.Open; Executar:= navegacao; Executar:= exibePanels; end;
Se uso com nil:
procedure TfrmCadPadrao.RegistrosBloqueadosparauso1Click(Sender: TObject); var qry: TSQLQuery; begin qry:= TSQLQuery.Create(nil); qry.SQLConnection:= DM.SQLConexao; qry.Close; qry.CommandText:= SELECT * FROM + nomeTabela + WHERE ATIVO_ + sufixoTabela + = + #39 + N + #39; qry.Open; DS.DataSet.Open; Executar:= navegacao; Executar:= exibePanels; end;
Não retorna erro mas, não lista nada.
raised exception class TDBXError with message Token unknowm - line 1, 35 =
Gostei + 0
09/04/2012
Bruno Leandro
Gostei + 0
09/04/2012
Adilson Rumao
Produtos Ativados, Produtos Desativado, Produtos Alterador em um período etc.
Estou querendo que, ao clicar na opção abra os dados no DBGrid.
Se eu mandar abrir direto no DBGrid com DS.DataSet.Open; os dados aparecem sem problemas mas, com a consulta não.
procedure TfrmCadPadrao.btnOkClick(Sender: TObject);
begin
if (cbxCampo.Text <> EmptyStr) and (edtValorCampo.Text <> EmptyStr) then
begin
if (rdgFiltros.ItemIndex = 0) then
begin
DS.DataSet.Filter := Upper(+ DS.DataSet.Fields[listaField[cbxCampo.ItemIndex]].FieldName +) LIKE +QuotedStr(Uppercase(edtValorCampo.Text)+%);
DS.DataSet.Filtered:= True;
if not DS.DataSet.Active then
DS.DataSet.Open;
end;
Esta consulta tbm funciona.
Gostei + 0
09/04/2012
Bruno Leandro
.
.
ds.dataset := qry;
qry.open;
mas não entendi direito o que voce esta fazendo, talvez esse não seja o melhor jeito.
Gostei + 0
09/04/2012
Adilson Rumao
Tenho um MainMenu com as opções:
Todos os regfistros desta tabela
Registros alterados no período
Registros incluídos no período
Registros bloqueados para uso
Para mostrar todos os registros da tabela bls, dou um DS.DataSet.Open e ele lista todos.
no data módulo tenho ClienteDataSet, DataSetProvider, SqlDataSet
Inclusão, alteração, exclusão, tudo funciona.
Só nesta parte que parei e não estou conseguindo fazer funcionar.
procedure TfrmCadPadrao.RegistrosBloqueadosparauso1Click(Sender: TObject); var qry: TSQLQuery; begin qry:= TSQLQuery.Create(nil); qry.SQLConnection:= DM.SQLConexao; qry.Close; qry.CommandText:= SELECT * FROM + nomeTabela + WHERE ATIVO_ + sufixoTabela + = + #39 + N + #39; DS.DataSet:= qry; qry.Open; //DS.DataSet.Open; Executar:= navegacao; Executar:= exibePanels; end;
Lembrando que tenho as variáveis globais nomeTabela e sufixoTabela declaradas.
Não sei se pode ser erro no SELECT, estou estando aqui.
Gostei + 0
09/04/2012
Bruno Leandro
Gostei + 0
09/04/2012
Adilson Rumao
select * from teste where ativo_tes=N
Gostei + 0
09/04/2012
Adilson Rumao
select * from teste where ativo_tes=N
Corrgindo:
select * from teste where ativo_tes=N
Gostei + 0
09/04/2012
Adilson Rumao
select * from teste where ativo_tes=N
Corrgindo:
select * from teste where ativo_tes=N
Tem aspas simples entre o N
Gostei + 0
10/04/2012
Adilson Rumao
TClientDataSet(DS.DataSet).Close; TClientDataSet(DS.DataSet).CommandText:= SELECT * FROM + nomeTabela + WHERE ATIVO_ + sufixoTabela + = + #39 + N + #39; TClientDataSet(DS.DataSet).Execute; TClientDataSet(DS.DataSet).Open;
Ele sempre fica pegando esta sentença SQl. Acredito que esta ainda não seja a forma correta.
Gostei + 0
10/04/2012
Bruno Leandro
Todos os regfistros desta tabela
Registros alterados no período
Registros incluídos no período
Registros bloqueados para uso
utilizar o Filter
ds.dataset.filtered := false;
ds.dataset.filter := ativo = N;
ds.dataset.filtered := true;
Gostei + 0
10/04/2012
Adilson Rumao
Criei uma TExecutar = (sentencaSQL);
{Executa Sentença SQL}
sentencaSQL:
begin
TClientDataSet(DS.DataSet).Close;
TClientDataSet(DS.DataSet).Filtered:= False;
TClientDataSet(DS.DataSet).CommandText:= strSQL;
TClientDataSet(DS.DataSet).Execute;
TClientDataSet(DS.DataSet).Open;
TClientDataSet(DS.DataSet).Filtered:= True;
TClientDataSet(DS.DataSet).First;
if(DS.DataSet.RecordCount = 0) then
begin
mensagem:= Não foi encontrado nenhum registro que + #13
+ satisfaça a sua pesquisa. ;
Application.MessageBox(PChar(mensagem),Informação,MB_OK+MB_ICONQUESTION);
end;
end;
E nas consultas estou usando assim:
procedure TfrmCadPadrao.RegistrosBloqueadosparauso1Click(Sender: TObject);
begin
strSQL:= SELECT * FROM + nomeTabela;
strSQL:= strSQL + WHERE ATIVO_ + sufixoTabela + = + #39 + N + #39;
Executar:= sentencaSQL;
Executar:= exibePanels;
Executar:= navegacao;
end;
procedure TfrmCadPadrao.TodososRegistrosdestaTabela1Click(Sender: TObject);
var
confExibe: Integer;
begin
Beep;
confExibe:= Application.MessageBox(Você optou por exibir todos os registros. + #13
+ Tenha em mente que, isso demanda muito processamento. + #13
+ Deseja continuar mesmo assim?, Atenção,
MB_YESNO+MB_DEFBUTTON2+MB_ICONQUESTION);
if confExibe = IDYES then
begin
strSQL:= SELECT * FROM + nomeTabela;
Executar:= sentencaSQL;
Executar:= exibePanels;
Executar:= navegacao;
end
else
begin
DS.DataSet.Close;
Executar:= navegacao;
end;
end;
Talvez não seja a melhor forma de se fazer mas, está funcionando de momento. Vou continuar com os testes aqui.
O uso do Filtered também não sei se está correto. Vou testando, e valeu pela força.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)