Fórum GRAVAR NAS TABELAS USANDO DBEXPRESS #401627
24/05/2011
0
Valdelir Castanheiro
Curtir tópico
+ 0Posts
24/05/2011
Rafael Mattos
como assim todos os componentes são READ-ONLY??
Gostei + 0
24/05/2011
Valdelir Castanheiro
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?
Gostei + 0
24/05/2011
Rafael Mattos
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
Gostei + 0
24/05/2011
Valdelir Castanheiro
Gostei + 0
25/05/2011
Leandro Santos
Não é o seu banco de dados que está em modo somente de leitura.
Gostei + 0
25/05/2011
Valdelir Castanheiro
Gostei + 0
25/05/2011
Marco Salles
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
Gostei + 0
26/05/2011
Valdelir Castanheiro
Gostei + 0
26/05/2011
Rafael Mattos
posta o codigo da Edição e da Gravação
Gostei + 0
26/05/2011
Emerson Nascimento
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.
Gostei + 0
26/05/2011
Valdelir Castanheiro
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;
Gostei + 0
26/05/2011
Rafael Mattos
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
Gostei + 0
26/05/2011
Emerson Nascimento
você DEVE o manipular o CLIENTDATASET. é ele que deve ser editado, deletado, gravado, commitado....
Gostei + 0
07/06/2011
Nigro
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)