Operation not allowed on a unidirectional dataset TSQLQuery
Ola,
Quando executo o codigo abaixo, surge a mensagem:
Operation not allowed on a unidirectional dataset TSQLQuery.
Onde está o erro?
Attt
dalton
Quando executo o codigo abaixo, surge a mensagem:
procedure TFMRelFuncPer.BitBtn2Click(Sender: TObject); var data1, data2: string; begin DataModule1.SQLRelFuncPer.Close; DataModule1.SQLRelFuncPer.sql.Clear; DataModule1.SQLRelFuncPer.sql.add(´select * from tb_afastamento´); DataModule1.SQLRelFuncPer.sql.add(´where afast_cod > 0´); if CheckBox1.Checked=true then DataModule1.SQLRelFuncPer.sql.Add(´and afast_cod_servidor = ´ + DataModule1.SDSAfastamentoafast_cod_servidor.AsString); if CheckBox2.Checked=true then begin Data1:=FormatDateTime(´YYYY/MM/DD´, StrtoDate(MaskEdit1.Text)); Data2:=FormatDateTime(´YYYY/MM/DD´, StrtoDate(MaskEdit2.text)); DataModule1.SQLRelFuncPer.sql.add(´and afast_data_inic >= ´ + data1); DataModule1.SQLRelFuncPer.SQL.Add(´and afast_data_fim =< ´ + data2); end; DataModule1.SQLRelFuncPer.open; if DataModule1.SQLRelFuncPer.RecordCount = 0 then Application.MessageBox(´Não foi selecionado nenhum registro´,´Atenção´, MB_OK + MB_ICONEXCLAMATION) else RvProject1.Execute; end;
Operation not allowed on a unidirectional dataset TSQLQuery.
Onde está o erro?
Attt
dalton
Dbergkamps10
Curtidas 0
Respostas
Dbergkamps10
05/09/2009
sobe...
GOSTEI 0
Dbergkamps10
05/09/2009
subindo
GOSTEI 0
Osocram
05/09/2009
Amigo...
Componentes UniDirecionais tais como SqlQuery, SqlDataSet so serve para trazer os dados.
Não serve para fazer loop nem trazer em dbgrid.
Componentes UniDirecionais tais como SqlQuery, SqlDataSet so serve para trazer os dados.
Não serve para fazer loop nem trazer em dbgrid.
GOSTEI 0
Afarias
05/09/2009
Se o loop é em 1 direção serve, ex:
Open;
while not Eof do
begin
//
next;
end;
Assim, se o relatório ler o DataSet apenas 1 vez, do início ao fim, não tem problema. Qualquer outra coisa diferente disso (ex: First, Prior) não vai funcionar.
RecordCount não pode (ou não deve) ser usado em DataSets unidirecionais. Vc deve associar seu SQLQuery a um DataSetProvider e um ClientDataSet e usar o ClientDataSet (RecordCount, etc)
T+
Open;
while not Eof do
begin
//
next;
end;
Assim, se o relatório ler o DataSet apenas 1 vez, do início ao fim, não tem problema. Qualquer outra coisa diferente disso (ex: First, Prior) não vai funcionar.
RecordCount não pode (ou não deve) ser usado em DataSets unidirecionais. Vc deve associar seu SQLQuery a um DataSetProvider e um ClientDataSet e usar o ClientDataSet (RecordCount, etc)
T+
GOSTEI 0
Dbergkamps10
05/09/2009
Vlw pelas dicas.
vou tentar aqui.
att
dalton
vou tentar aqui.
att
dalton
GOSTEI 0
Dbergkamps10
05/09/2009
Olá,
ainda estou com problemas galera;
fiz o seguinte:
Coloquei o CDS e o Data Set Provider;
O DataSetProvider liguei na SQLQuery do relatório. O CDS liguei no DataSetProvier e o rave liguei no CDS. Porém, não aparece nada no relatorio.
Se alguem puder ajudarr, agradeço.
Attt
Dalton
ainda estou com problemas galera;
fiz o seguinte:
Coloquei o CDS e o Data Set Provider;
O DataSetProvider liguei na SQLQuery do relatório. O CDS liguei no DataSetProvier e o rave liguei no CDS. Porém, não aparece nada no relatorio.
Se alguem puder ajudarr, agradeço.
Attt
Dalton
GOSTEI 0
Dbergkamps10
05/09/2009
Galera, to precisando de uma força ae
Quem pode me ajudar.???
Quem pode me ajudar.???
GOSTEI 0
Afarias
05/09/2009
o SQL (do SQLQuery) está correto? tem parâmetros? se sim, vc definiu corretamente os valores dos parâmetros? o relatório (e componentes visuais do mesmo) está apontando para o CDS?
T+
T+
GOSTEI 0
Dbergkamps10
05/09/2009
Olá,
afarias, vlw pela força. mas ja fiz o tudo q vc recomendou e nada.
se alguem puder ajudar agradeço.
att
dalton
afarias, vlw pela força. mas ja fiz o tudo q vc recomendou e nada.
se alguem puder ajudar agradeço.
att
dalton
GOSTEI 0
Dbergkamps10
05/09/2009
olá,
substitui o SQLQuery pelo SQLDataSet, mas continua sem funcionar. alguém tem alguma luz?
substitui o SQLQuery pelo SQLDataSet, mas continua sem funcionar. alguém tem alguma luz?
GOSTEI 0
Dbergkamps10
05/09/2009
subindo.......
GOSTEI 0
Afarias
05/09/2009
Sem dar mais informações sobre o problema e o q vc está fazendo, ´subir´ não vai ajudar descobrir onde vc está errando.
Mostre mais sobre o seu código e o problema.
T+
Mostre mais sobre o seu código e o problema.
T+
GOSTEI 0