Problemas : Cursor not Returned from Query
01/07/2008
0
todo mundo falando pra usar ExecSQL no lugar de Open...
segui a dica, porém continua dando o erro...
A estrutura é mais ou menos assim....
With DataModule1.SQLQueryClientes do begin SQL.Clear; SQL.Add(´Insert into Clientes´); SQL.Add(´ (nome,residencia,fone,bairro,cidade,referencia,endereco_cob,naturalidade,uf,estado_civil,profissao,firma,pai, mae,rg,sexo,nascimento) ´); SQL.Add(´Values (:nome,:residencia,:fone,:bairro,:cidade,:referencia,´ +´:endereco_cob,:naturalidade,:uf,:estadocivil,´ +´:profissao,:firma,:pai,:mae,:rg,:sexo,:nascimento)´); ParamByName(´nome´).Value:= DbContribuinte.Text; ParamByName(´residencia´).Value:= Dbendereco.Text; ParamByName(´fone´).Value:= Dbfone.Text; ParamByName(´bairro´).Value:= Dbbairro.Text; ParamByName(´cidade´).Value:= Dbcidade.Text; ParamByName(´referencia´).Value:= Dbreferencia.Text; ParamByName(´endereco_cob´).Value:= Dbendereco.Text; ParamByName(´naturalidade´).Value:= Dbnaturalidade.Text; ParamByName(´uf´).Value:= DbEstado.ItemIndex; ParamByName(´nascimento´).Value:= Dbnascimento.Text; ParamByName(´estadocivil´).Value:= DbEstadocivil.Text; ParamByName(´profissao´).Value:= Dbprofissao.Text; ParamByName(´firma´).Value:= Dbfirma.Text; ParamByName(´pai´).Value:= Dbpai.Text; ParamByName(´mae´).Value:= dbmae.Text; ParamByName(´rg´).Value:= Dbrg.Text; ParamByName(´sexo´).Value:= DbSexo.ItemIndex; Try ExecSQL; if Application.MessageBox(´Cadastro Efetuado com sucesso, Deseja inserir Beneficiaios ?´, ´Cadastro´, MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON1) = ID_YES then begin FrmCadastroBeneficiario.ShowModal; end; except on e: exception do ShowMessage(e.Message); end; Self.Close; end;
Isso ta ocorrendo corretamente, e após isso é necessário ir pra otro form onde deve ser cadastrado beneficiarios... e é nesse form que dá o erro ...
lembrando que não estou usando open, e sim o ExecSQL....
no onclick de um botão coloquei...
basicamente precisei atualizar o ClientDataSetClientes para poder seguir normalmente no curso do programa, e nisso gerou o erro...
Var str: string; begin str:= InputBox(´Beneficiários´,´Código de Contrato´,´´); if Length(str) = 0 then exit; with DataModule1.ClientDataSetClientes do begin Close; Open; Filtered:= False; Filter:=´id = ´ + str; Filtered:= true; end; with DataModule1.ClientDataSetBeneficiarios do begin Close; Open; Filtered:= False; Filter:=´id = ´ + str; Filtered:= true; end; with DataModule1.SQLQueryInserir do begin SQL.Clear; SQL.Add(´Select * From beneficiarios where id = :ID´); ParamByName(´ID´).AsString:= str; Try ExecSQL; LabelCount.Caption:= IntToStr(RowsAffected); LabelCount.Update; Except end; end; end;
Alguma idéia ?
Qualquer critica construtiva é bem-vinda... e soluções...
Obrigado
:)
Lucas_msn
Posts
01/07/2008
Joaoshi
with DataModule1.SQLQueryInserir do begin SQL.Clear; SQL.Add(´Select * From beneficiarios where id = :ID´); ParamByName(´ID´).AsString:= str; Try // ExecSQL; --> nesta linha Open; LabelCount.Caption:= IntToStr(RowsAffected); LabelCount.Update; Except end; end;
Basicamente quando for utilizar um [b:7903e9deb6]SELECT[/b:7903e9deb6] utilize o [b:7903e9deb6]OPEN[/b:7903e9deb6].
Quando for utilizar INSERT, UPDATE, DELETE utilize o ExecSQL.
Espero ter ajudado.
01/07/2008
Lucas_msn
to batendo cabeça... qualquer ajuda é sempre bem vinda...
obrigado novamente
01/07/2008
Lucas_msn
obrigado ai pela força e desculpa em ensistir no erro
xD
até
Clique aqui para fazer login e interagir na Comunidade :)