Fórum GRAVAR NAS TABELAS USANDO DBEXPRESS #401627

24/05/2011

0

COMO FAÇO PARA GRAVAR NO BANCO DE DADOS USANDO OS COMPONENTES DBEXEPRESS? JA QUE TODOS OS COMPONENTES SÃO READ ONLY?


Valdelir Castanheiro

Valdelir Castanheiro

Responder

Posts

24/05/2011

Rafael Mattos

não entendi o que vc quis dizer....
como assim todos os componentes são READ-ONLY??
Responder

Gostei + 0

24/05/2011

Valdelir Castanheiro

não entendi o que vc quis dizer....
como assim todos os componentes são READ-ONLY??


todos os componentes são read only certo? então como é que eu faço para gravar nas tabelas do banco usando o dbexpress?
Responder

Gostei + 0

24/05/2011

Rafael Mattos

não entendi o que vc quis dizer....
como assim todos os componentes são READ-ONLY??


todos os componentes são read only certo? então como é que eu faço para gravar nas tabelas do banco usando o dbexpress?


não os componentes não são read only




ClientDataSet.edit;          // EDIT
ClientDataSet.Insert;      // INSERE
ClientDataSet.Post;        // GRAVA NO CACHE
ClientDataSet.Delete;     // DELETE
ClientDataSet.ApplyUpdates(0);  // APLICA O QUE ESTÁ NO CACHE NO BANCO DE DADOS




Se vc quer inserir no botão Inserir coloque

ClientDataSet.Insert;      // INSERE


depois no botão gravar

ClientDataSet.Post;        // GRAVA NO CACHE
ClientDataSet.ApplyUpdates(0);  // APLICA O QUE ESTÁ NO CACHE NO BANCO DE DADOS
Responder

Gostei + 0

24/05/2011

Valdelir Castanheiro

ja tentei usar todos estes exmplos e diz que a tabela não pode ser modificado, usei o edit, insert, append e não consegui gravar
Responder

Gostei + 0

25/05/2011

Leandro Santos

Qual Banco de dados vc está usando?
Não é o seu banco de dados que está em modo somente de leitura.
Responder

Gostei + 0

25/05/2011

Valdelir Castanheiro

Estou usando o Firebird, no banco não tem nenhuma restrição de gravção
Responder

Gostei + 0

25/05/2011

Marco Salles

Vc consegue se comunicar com o Banco ..

Parece que seu problema é Gravar no Banco

Vc tem que commitar estas alterações ( Vc deve estar utilizando um clientDataSet suponho)

Então vc tem que fazer as alterações e no fim dar um ApplayUpdates(0) para que os dados possam
trafegar para o servidor

Pode ser que vc tenha erro. Este erro é silencioso e vc pode ver no evento OnEconcilleError do ClientDataSet

Enfim , faças as devidas alterações/inserções/ediçoes e de um ApplayUpdates(0) e programa o evento
OnReconcilleError e passe mais detalhes
Responder

Gostei + 0

26/05/2011

Valdelir Castanheiro

Acontece que o erro acontece quando eu edito a tabela para inserir os dados e não na hora de gravar
Responder

Gostei + 0

26/05/2011

Rafael Mattos

Acontece que o erro acontece quando eu edito a tabela para inserir os dados e não na hora de gravar



posta o codigo da Edição e da Gravação
Responder

Gostei + 0

26/05/2011

Emerson Nascimento

você deve estar usando somente os componentes dbExpress. eles realmente são somente leitura (unidirecionais).

para fazer a manutenção dos registros contidos nesses objetos você precisará ligá-los a um ClientDataset através de um DataseProvider. E para exibir os dados você precisará ligar um Datasource ao ClientDataset para poder ligá-lo ao seus componentes Dataware.

o ClientDataset é bidirecional (leitura e escrita) e sem ele você não conseguirá manipular seus registros.

então sua ligação deve ser assim:

SQLConnection <- SQLDataset <- DatasetProvider <- ClientDataset <- Datasource <- Componente Dataware (dbGrid, dbEdit, etc)

pesquise aqui no fórum e na internet a respeito. há vários artigos explicando como trabalhar com dbExpress.




Responder

Gostei + 0

26/05/2011

Valdelir Castanheiro

ESTOU ENVIANDO O CODIGO, FIZ COMO VC SUGERIU MAS NA HORA DE EDITAR A SQLDATASET1 DA A MENSAGEM DIZENDO QUE NÃO PODE SER MODIFICADA

 while not ClientDataSet1.Eof do
   Begin
    Inc(Conta);
    Gauge1.Progress:=Conta;
    Prefixo:=ClientDataSet1CODIGOLINHA.Value;
    CatracaInicial:=BcdToInteger(ClientDataSet1CATRACAINICIAL.Value);
    CatracaFinal:=BcdToInteger(ClientDataSet1CATRACAFINAL.Value);
    DataInicio:=DateToStr(ClientDataSet1DATAINICIO.AsDateTime);
    SQLDataSet1.Close;
    SQLDataSet1.ParamByName('PREFIXO').Value:=Prefixo;
    SQLDataSet1.ParamByName('CATRACAINCIAL').Value:=CatracaInicial;
    SQLDataSet1.ParamByName('CATRACAFINAL').Value:=CatracaFinal;
    SQLDataSet1.ParamByName('DATAINICIO').AsDate:=StrToDate(DataInicio);
    SQLDataSet1.Open;
    if SQLDataSet1.Eof and SQLDataSet1.Bof then
       Begin
        SQLDataSet1.Edit;
        SQLDataSet1PREFIXO.Value:=SQLQuery1CODIGOLINHA.Value;
        SQLDataSet1CATRACAINICIAL.Value:=BcdToInteger(SQLQuery1CATRACAINICIAL.Value);
        SQLDataSet1CATRACAINICIAL.Value:=BcdToInteger(SQLQuery1CATRACAFINAL.Value);
        SQLDataSet1DATAINICIO.Value:=SQLQuery1DATAINICIO.AsDateTime;
        SQLDataSet1DATAFIM.Value:=SQLQuery1DATAFIM.AsDateTime;
        SQLDataSet1MATRICULACOBRADOR.Value:=StrToInt(SQLQuery1MATRICULA.Value);
        SQLDataSet1NOMECOBRADO.Value:=SQLQuery1COBRADOR.Value;
        SQLDataSet1VEICULO.Value:=StrToInt(SQLQuery1VEICULO.Value);
        SQLDataSet1SEQSECAO.Value:=BcdToInteger(SQLQuery1SEQUENCIASESSAO.Value);
        SQLDataSet1PAGANTES.Value:=BcdToInteger(SQLQuery1PAGANTES.Value);
        SQLDataSet1VPAGANTES.Value:=SQLQuery1VPAGANTES.Value;
        SQLDataSet1QTDUSUARIOS.Value:=BcdToInteger(SQLQuery1QTD_USUARIOS.Value);
        SQLDataSet1VUSUARIOS.Value:=SQLQuery1VALOR_USUARIOS.Value;
        SQLDataSet1QTDESTUDANTES.Value:=BcdToInteger(SQLQuery1QTD_ESTUDANTES.Value);
        SQLDataSet1VESTUDANTES.Value:=SQLQuery1VALOR_ESTUDANTES.Value;
        SQLDataSet1QTDISENTOS.Value:=BcdToInteger(SQLQuery1QTD_ISENTOS.Value);
        SQLDataSet1VISENTOS.Value:=SQLQuery1VALOR_ISENTOS.Value;
        SQLDataSet1QTDVALETRANSPORTE.Value:=BcdToInteger(SQLQuery1QTD_VALETRANSPORTE.Value);
        SQLDataSet1VVALETRANSPORTE.Value:=SQLQuery1VALOR_VALETRANSPORTE.Value;
        SQLDataSet1QTDINTEGRACAO.Value:=BcdToInteger(SQLQuery1QTD_INTEGRACOES.Value);
        SQLDataSet1VINTEGRACAO.Value:=SQLQuery1VALOR_INTEGRACOES.Value;
        SQLDataSet1QTDOUTROS.Value:=BcdToInteger(SQLQuery1QTD_OUTROSSISTEMAS.Value);
        SQLDataSet1VOUTROS.Value:=SQLQuery1VALOR_OUTROSSISTEMAS.Value;
        SQLDataSet1QTDTOTAL.Value:=BcdToInteger(SQLQuery1QTD_TOTAL.Value);
        SQLDataSet1VTOTAL.Value:=SQLQuery1VALOR_TOTAL.Value;
        SQLDataSet1NRFORMULARIO.Value:=0;
        SQLDataSet1.Post;
      end;
    ClientDataSet1.Next;
   end;

Responder

Gostei + 0

26/05/2011

Rafael Mattos

ESTOU ENVIANDO O CODIGO, FIZ COMO VC SUGERIU MAS NA HORA DE EDITAR A SQLDATASET1 DA A MENSAGEM DIZENDO QUE NÃO PODE SER MODIFICADA

 while not ClientDataSet1.Eof do
   Begin
    Inc(Conta);
    Gauge1.Progress:=Conta;
    Prefixo:=ClientDataSet1CODIGOLINHA.Value;
    CatracaInicial:=BcdToInteger(ClientDataSet1CATRACAINICIAL.Value);
    CatracaFinal:=BcdToInteger(ClientDataSet1CATRACAFINAL.Value);
    DataInicio:=DateToStr(ClientDataSet1DATAINICIO.AsDateTime);
    SQLDataSet1.Close;
    SQLDataSet1.ParamByName('PREFIXO').Value:=Prefixo;
    SQLDataSet1.ParamByName('CATRACAINCIAL').Value:=CatracaInicial;
    SQLDataSet1.ParamByName('CATRACAFINAL').Value:=CatracaFinal;
    SQLDataSet1.ParamByName('DATAINICIO').AsDate:=StrToDate(DataInicio);
    SQLDataSet1.Open;
    if SQLDataSet1.Eof and SQLDataSet1.Bof then
       Begin
        SQLDataSet1.Edit;
        SQLDataSet1PREFIXO.Value:=SQLQuery1CODIGOLINHA.Value;
        SQLDataSet1CATRACAINICIAL.Value:=BcdToInteger(SQLQuery1CATRACAINICIAL.Value);
        SQLDataSet1CATRACAINICIAL.Value:=BcdToInteger(SQLQuery1CATRACAFINAL.Value);
        SQLDataSet1DATAINICIO.Value:=SQLQuery1DATAINICIO.AsDateTime;
        SQLDataSet1DATAFIM.Value:=SQLQuery1DATAFIM.AsDateTime;
        SQLDataSet1MATRICULACOBRADOR.Value:=StrToInt(SQLQuery1MATRICULA.Value);
        SQLDataSet1NOMECOBRADO.Value:=SQLQuery1COBRADOR.Value;
        SQLDataSet1VEICULO.Value:=StrToInt(SQLQuery1VEICULO.Value);
        SQLDataSet1SEQSECAO.Value:=BcdToInteger(SQLQuery1SEQUENCIASESSAO.Value);
        SQLDataSet1PAGANTES.Value:=BcdToInteger(SQLQuery1PAGANTES.Value);
        SQLDataSet1VPAGANTES.Value:=SQLQuery1VPAGANTES.Value;
        SQLDataSet1QTDUSUARIOS.Value:=BcdToInteger(SQLQuery1QTD_USUARIOS.Value);
        SQLDataSet1VUSUARIOS.Value:=SQLQuery1VALOR_USUARIOS.Value;
        SQLDataSet1QTDESTUDANTES.Value:=BcdToInteger(SQLQuery1QTD_ESTUDANTES.Value);
        SQLDataSet1VESTUDANTES.Value:=SQLQuery1VALOR_ESTUDANTES.Value;
        SQLDataSet1QTDISENTOS.Value:=BcdToInteger(SQLQuery1QTD_ISENTOS.Value);
        SQLDataSet1VISENTOS.Value:=SQLQuery1VALOR_ISENTOS.Value;
        SQLDataSet1QTDVALETRANSPORTE.Value:=BcdToInteger(SQLQuery1QTD_VALETRANSPORTE.Value);
        SQLDataSet1VVALETRANSPORTE.Value:=SQLQuery1VALOR_VALETRANSPORTE.Value;
        SQLDataSet1QTDINTEGRACAO.Value:=BcdToInteger(SQLQuery1QTD_INTEGRACOES.Value);
        SQLDataSet1VINTEGRACAO.Value:=SQLQuery1VALOR_INTEGRACOES.Value;
        SQLDataSet1QTDOUTROS.Value:=BcdToInteger(SQLQuery1QTD_OUTROSSISTEMAS.Value);
        SQLDataSet1VOUTROS.Value:=SQLQuery1VALOR_OUTROSSISTEMAS.Value;
        SQLDataSet1QTDTOTAL.Value:=BcdToInteger(SQLQuery1QTD_TOTAL.Value);
        SQLDataSet1VTOTAL.Value:=SQLQuery1VALOR_TOTAL.Value;
        SQLDataSet1NRFORMULARIO.Value:=0;
        SQLDataSet1.Post;
      end;
    ClientDataSet1.Next;
   end;




vc tem que fazer igual o Emerson falou usar os Trio
Responder

Gostei + 0

26/05/2011

Emerson Nascimento

não manipule o SQLDataset.


você DEVE o manipular o CLIENTDATASET. é ele que deve ser editado, deletado, gravado, commitado....
Responder

Gostei + 0

07/06/2011

Nigro

Apenas lembrando que não pode ter join no Dataset.
Responder

Gostei + 0

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

Aceitar