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

Delphi

29/05/2012

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

Curtidas 0

Respostas

Bruno Leandro

Bruno Leandro

29/05/2012

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;
GOSTEI 0
Geilson Morais

Geilson Morais

29/05/2012

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;
GOSTEI 0
Bruno Leandro

Bruno Leandro

29/05/2012

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
GOSTEI 0
Geilson Morais

Geilson Morais

29/05/2012

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


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

Estou Perdido !!!!.

GOSTEI 0
Bruno Leandro

Bruno Leandro

29/05/2012

deveria funcionar, talvez nao tenha acesso, tenta utilizar nil no lugar de self
GOSTEI 0
Geilson Morais

Geilson Morais

29/05/2012

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

Bruno Leandro

29/05/2012

da uma pesquisada sobre DAO
GOSTEI 0
Joao Moreira

Joao Moreira

29/05/2012

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.
GOSTEI 0
Geilson Morais

Geilson Morais

29/05/2012

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.
GOSTEI 0
Geilson Morais

Geilson Morais

29/05/2012

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
GOSTEI 0
POSTAR