Duvida em dbexpress
Estou começando a utilizar os componentes dbexpress, e estou precisando fazer uma consulta em uma tabela filtrando codigo do cliente e seus pedidos em um determinado periodo, fiz a consulta da seguinte maneira, mas nao funciona, como eu posso faze-la?
DM.CdsPedidos.Close; DM.CdsPedidos.CommandText := ´SELECT * FROM PEDIDOS WHERE CODCLI = ´+IntToStr(DM.xcodcli)+´ AND DATPED BETWEEN ´+EDatini.DateText+´ AND ´+EDatini.DateText+´´; DM.CdsPedidos.Open;
Felipeiw
Curtidas 0
Respostas
Xisto
02/11/2005
eu faço assim:
sqldataset->provider->clientedataset->datasource
sqldataset.close
sqldataset.adicioneoscomandossql
clientedataset.close
clientedataset.open
sqldataset->provider->clientedataset->datasource
sqldataset.close
sqldataset.adicioneoscomandossql
clientedataset.close
clientedataset.open
xcodcli:= edcodigopraprocurar.text; DM.CdsPedidos.Close; DM.CdsPedidos.CommandText := ´SELECT * FROM PEDIDOS WHERE CODCLI = ´+IntToStr(xcodcli)+´ AND DATPED BETWEEN ´+EDatini.DateText+´ AND ´+EDatini.DateText+´´; DM.CdsPedidos.Open;
GOSTEI 0
Felipeiw
02/11/2005
Nao entendi, desculpe, vc passa os comandos na propriedade sql do componete TSqlquery? mas estou passando os comandos em tempo de execução.
Abs
Abs
GOSTEI 0
Xisto
02/11/2005
Isso msm.
Pra funcionar vc fecha o SQLDataSet,
inclui o comando que vc quer e abre pelo
ClienteDataSet.
O meu sistema é todo assim.
Pra funcionar vc fecha o SQLDataSet,
inclui o comando que vc quer e abre pelo
ClienteDataSet.
O meu sistema é todo assim.
GOSTEI 0
Adriano Santos
02/11/2005
Isso msm.
Pra funcionar vc fecha o SQLDataSet,
inclui o comando que vc quer e abre pelo
ClienteDataSet.
O meu sistema é todo assim.
[b:17822b1cec]felipeiw[/b:17822b1cec], o [b:17822b1cec]Xisto[/b:17822b1cec] está correto, vc abre pelo ClientDataSet, mas todos os comandos SQL você coloca no TSQLDataSet.
GOSTEI 0
Fabio Nascimento
02/11/2005
Utilizando DBX, SQLDataSet >> Provider >> ClientDataSet:
Basta você ativar a opção ´AllowCommandText´ do DataSetProvider correspondente, que você pode trabalhar diretamente com o componente ClientDataSet. Na minha opinião facilita, pois fica mais simples trabalhar com 1 só componente =)
Para usar um campo do tipo DATE como filtro, você deve usar uma consulta parametrizada do tipo:
SELECT * FROM PEDIDOS WHERE DATAPEDIDO BETWEEN :DATAINICIO AND :DATAFINAL ORDER BY DATAPEDIDO ASC
Ou fazer um TypeCast do tipo:
SELECT * FROM PEDIDOS WHERE DATAPEDIDO BETWEEN CAST(´MM/DD/YYY´ AS DATE) AND CAST(´MM/DD/YYY´ AS DATE)
Mas procure utilizar buscas parametrizadas, que melhora a performance geral do sistema :P
Basta você ativar a opção ´AllowCommandText´ do DataSetProvider correspondente, que você pode trabalhar diretamente com o componente ClientDataSet. Na minha opinião facilita, pois fica mais simples trabalhar com 1 só componente =)
Para usar um campo do tipo DATE como filtro, você deve usar uma consulta parametrizada do tipo:
SELECT * FROM PEDIDOS WHERE DATAPEDIDO BETWEEN :DATAINICIO AND :DATAFINAL ORDER BY DATAPEDIDO ASC
Ou fazer um TypeCast do tipo:
SELECT * FROM PEDIDOS WHERE DATAPEDIDO BETWEEN CAST(´MM/DD/YYY´ AS DATE) AND CAST(´MM/DD/YYY´ AS DATE)
Mas procure utilizar buscas parametrizadas, que melhora a performance geral do sistema :P
GOSTEI 0