Fórum Codigo para meu objeto TQuery da minha classe possa conectar um no objeto de conexão Tado Conection que esta no meu Data Module #417668

29/05/2012

0

Preciso de Ajuda, preciso que o meu formulario na hora de gravar os dados chame o metodo gravar em uma outra classe gravarDados

meu problema é que não consigo iniciar a conexão com o banco sql server,
passar esta conexão para minha queury e assim gravar os dados


qyGeneric.Open; //dar erro logo aqui!!!! pois minha queury não tem uma conexão ativa. O que preciso é fazer com que ela se ligue no meu daa module e puche a conexão

qyGeneric.SQL.Clear;
qyGeneric.SQL.Add(INSERT INTO Pessoa (Nome,Fantasia,CnpjCpf,RgInsc,DataNascimento,OutrasInfo,TipoPessoa) VALUES (:Nome,:Fantasia,:CnpjCpf,:RgInsc,:DataNascimento,:OutrasInfo,:TipoPessoa));
qyGeneric.ParamByName(Nome).Value := pessoa.Nome;
qyGeneric.ParamByName(Fantasia).Value := pessoa.Fantasia;
qyGeneric.ParamByName(CnpjCpf).Value := pessoa.CnpjCpf;
qyGeneric.ParamByName(RgInsc).Value := pessoa.RgInsc;
qyGeneric.ParamByName(DataNascimento).Value := pessoa.DataNascimento;
qyGeneric.ParamByName(OutrasInfo).Value := pessoa.OutrasInfo;
qyGeneric.ParamByName(TipoPessoa).Value := pessoa.Tipo;
qyGeneric.ExecSQL;
qyGeneric.SQL.Clear;
Geilson Morais

Geilson Morais

Responder

Posts

30/05/2012

Bruno Leandro

Ola, tente assim, quando vc for criar a classe passe o tadoconnect para ela e quando voce for criar o seu query atribua o valor na propriedade de conexão, mais ou menos como o modelo a seguir

query := tadoquery.create
query.connection := adoconnection;
Responder

Gostei + 0

30/05/2012

Geilson Morais

Amigo antes obrigado por sua atenção,

Olha fiz como você sugeriu porem quando faço
query := tadoquery.create pede (AOwner: Tcomponent); //ou seja Pametes Aowner Classes.Tcomponent

não entendo me desculpe a ignorancia sou novo em programação Delphi e o meu projeto que devo apresentar tem que ser desenvolivido em Delphi

No meu preojeto tenho uma classe pessoa onde é criado o objeto pessoa passo este objeto para classe de gravar que vai
realizar o insert no meu banco, se eu fizer tudo na classe pessoa adicionando o objeto visual Tquery for em string depois
fild editor add allfildes especificar specificar no objector Inspecor a conexão dar tudo certo, mais não pode ser assin tenho
que utlizar uma outra classe para gravar passando o objeto, e não estou sabendo como criar uma query via codigo depois conectar depois passar os paramentros de insert e depois finalmente gravar

Es o codigo que estou digitando na minha classe de gravar, lembrando que o objeto vem direitinho da classe pessoa

meu erro esta na grvação desta pessoa no banco atraves de uma outra classe Gravar

qyGeneric.Create;
qyGeneric.Connection := Conexao.ADO_conecxao;
qyGeneric.Open;
qyGeneric.SQL.Clear;
qyGeneric.SQL.Add(INSERT INTO Pessoa (Nome,Fantasia,CnpjCpf,RgInsc,DataNascimento,OutrasInfo,TipoPessoa) VALUES (:Nome,:Fantasia,:CnpjCpf,:RgInsc,:DataNascimento,:OutrasInfo,:TipoPessoa));
qyGeneric.Parameters.ParamByName(Nome).Value := pessoa.Nome;
qyGeneric.Parameters.ParamByName(Fantasia).Value := pessoa.Fantasia;
qyGeneric.Parameters.ParamByName(CnpjCpf).Value := pessoa.CnpjCpf;
qyGeneric.Parameters.ParamByName(RgInsc).Value := pessoa.RgInsc;
qyGeneric.Parameters.ParamByName(DataNascimento).Value := pessoa.DataNascimento;
qyGeneric.Parameters.ParamByName(OutrasInfo).Value := pessoa.OutrasInfo;
qyGeneric.Parameters.ParamByName(TipoPessoa).Value := pessoa.Tipo;
qyGeneric.ExecSQL;
qyGeneric.SQL.Clear;
Responder

Gostei + 0

31/05/2012

Bruno Leandro

Para criar tente passar o self,ex

query := tadoquery.create(self);

e tem outro falha que é
.
.
qyGeneric.Connection := Conexao.ADO_conecxao;
qyGeneric.Open;
.
.
.
neste momento voce nao tem comando sql ou seja o open nao é necessario e ira gerar um erro por falta de sql
Responder

Gostei + 0

31/05/2012

Geilson Morais

Quando passo o Self como parâmetro ocorre este erro:


[DCC Error] uCadastro.pas(50): E2010 Incompatible types: TComponent and Class reference

Estou Perdido !!!!.

Responder

Gostei + 0

31/05/2012

Bruno Leandro

deveria funcionar, talvez nao tenha acesso, tenta utilizar nil no lugar de self
Responder

Gostei + 0

31/05/2012

Geilson Morais

Você sabe me indicar um artigo ou outra coisa onde eu possa estudar sobre inserir dados no banco utilizando classes.
Responder

Gostei + 0

31/05/2012

Bruno Leandro

da uma pesquisada sobre DAO
Responder

Gostei + 0

31/05/2012

Joao Moreira

cria um modelo mais ou menos assim:
crie suas classes de entidade exemplo: cliente, fornecedores e etc.. e para cada classe de entidade crie um DAO, exemplo: clienteDAO, fornecedorDAO as classes DAO fazem a parte de acesso aos dados, ou seja, a persistencia voce poderia também ter uma classe de conexão e passar ela no Create das classes DAO eu gosto de trabalhar assim particularmente, tem um padrão de projeto chamado fábrica(abstract factory) você cria uma interface declara os metodos e implemeta nas classe DAO da uma pesquisada nisso ai tem muito material disponível, espero ter colaborado.
Responder

Gostei + 0

01/06/2012

Geilson Morais

Ai Pessoal, Obrigadão deu Certo,

Gostei deste padrão de Pojeto fábrica(abstract factory), com ele é possivel dar uma organizada legal. estou remodelando minhas class.
Responder

Gostei + 0

01/06/2012

Geilson Morais

Ai Bruno vc estava certo na sua primeira resposta

query := tadoquery.create(self);


EU É QUE ESTAVA CEGO E DIGITANDO ERRADO

query.tadoquery.create(self); // ESTAVA TENTANDO CRIAR DESTA FORMA E O JEITO CERTO É O QUE VC PASSOU

query := tadoquery.create(self); //JEITO CERTO E QUE VC PASSOU


DESCULPA NO OUTRO DIA É QUE VI QUE ESTAVA DIGITANDO ERRADO
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar