Fórum Erro ==gt; DbExpress Error: Operation not supported. #287672
11/07/2005
0
Fiz algumas pesquisa no forum para tentar fazer uma rotina de pesquisa entre datas, mas infelizmente são muito confusas.
Então estou tentando fazer uma simples consulta, mas não esta dando certo, vou ser bem detalhista, pois espero que alguem me informe o correto erro que estou fazendo.
Bom pra comerçar tenho um DataModule
Propriedade Name: Dm
Coloquei um SqlDataSet com a propriedades a serem:
Name: dst_Rpt_Clientes
CommandText : select * from Clientes order by CodCliente
Sqlconnect : SqlConnect1
Bom agora no formulario
Coloquei 2 edit´s uma para receber o dia e outro para receber o mês
Os dados que informo aos edits são :
Por exemplo:
28 para o dia
11 para o mes
O codigo do evento OnExit do ultimo edit que dá o erro:
DbExpress Error: Operation not supported.
Codigo...
// Desliga sqldataset
Dm.dst_Rpt_Clientes.Active := False;
// passa o novo command text.
Dm.dst_Rpt_Clientes.CommandText := ´select * from Clientes where (extract(day from DtNasc) = :dia_desejado) and (extract(month from DtNasc) = :mes_desejado)´;
// Passagem de parametros
Dm.dst_Rpt_Clientes.ParamByName(´dia_desejado´).AsInteger := StrToInt(Edit1.Text);
Dm.dst_Rpt_Clientes.ParamByName(´mes_desejado´).AsInteger := StrtoInt(Edit2.Text);
// Ativa sqldataset
Dm.dst_Rpt_Clientes.Active := True;
// Se for vazio avisa (Isempty é melhor quando usado em rede, do que recordcount).
if Dm.dst_Rpt_Clientes.IsEmpty then
Application.MessageBox(´Não há aniversariantes para o período.´,´Erro ao localizar´,mb_IconInformation);
Bom, tentei descrever o que esta acontecendo e quero mostrar os dados de resultado em um relatorio usando o quick report.
Creio que o problema esta no uso de algum comando acima, entao peço a comunidade que se possível me passe o codigo correto ou me informe um código melhor para eu trabalhar com os componentes que devo utilizar.
Grato a todos
Valnei
Objetivacreator
Curtir tópico
+ 0Posts
12/07/2005
Cabelo
Tenta fazer assim...
Gostei + 0
12/07/2005
Jairroberto
Por acaso você conectou o SQLDataSet a um DBGrid através de um DataSource? Se fez, esse é o problema, pois o SQLDataSet é unidirecional e portanto não é suportado pelo DBGrid que avança e retorna nos registros constantemente para montar o controle. Nesse caso você deve utilizar um DataSetProvider e um ClientDataSet, conectando esse último ao DataSource do DBGrid.
Aproveito para comentar que, na minha opinião, a utilização de parâmetros nesse tipo de Query, onde os parâmetros são alimentados logo após a definição do CommandText, é desnecessária. Em vez disso eu prefiro usar a função Format para criar o CommandText:
// passa o novo command text já com os parâmetros Dm.dst_Rpt_Clientes.CommandText := Format(´select * from Clientes where (extract(day from DtNasc) = ¬s) and (extract(month from DtNasc) = ¬s)´, [Edit1.Text, Edit2.Text]);
A propósito, o Cabelo não percebeu que você está usando SQLDataSet, que não possui nenhuma propriedade chamada ´SQL´, não adianta procurar.
Um abraço,
Jair
Gostei + 0
13/07/2005
Objetivacreator
As informações foram muito úteis e comecei a entender realmente o que a paleta dbexpress.
Um abraço
Valnei
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)