Codigo para meu objeto TQuery da minha classe possa conectar um no objeto de conexão Tado Conection que esta no meu Data Module
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;
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
Curtidas 0
Respostas
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;
query := tadoquery.create
query.connection := adoconnection;
GOSTEI 0
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;
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
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
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
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 !!!!.
[DCC Error] uCadastro.pas(50): E2010 Incompatible types: TComponent and Class reference
Estou Perdido !!!!.
GOSTEI 0
Bruno Leandro
29/05/2012
deveria funcionar, talvez nao tenha acesso, tenta utilizar nil no lugar de self
GOSTEI 0
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
29/05/2012
da uma pesquisada sobre DAO
GOSTEI 0
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.
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
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 deste padrão de Pojeto fábrica(abstract factory), com ele é possivel dar uma organizada legal. estou remodelando minhas class.
GOSTEI 0
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
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