Manoel Zancheta Postado Julho 21, 2009 Denunciar Share Postado Julho 21, 2009 Olá.Precisei usar SQL Server 2005 e usei a BDE para acesso. Está tudo normal, só não estou conseguindo fazer updates nas tabelas.PS - não estou usando DBGrid nem Navigator, os dados da tabela estão num stringgrid, componente que achei mais apropriado para a aplicação em questão.Grato! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Julho 22, 2009 Denunciar Share Postado Julho 22, 2009 Precisei usar SQL Server 2005 e usei a BDE para acesso. Está tudo normal, só não estou conseguindo fazer updates nas tabelas.PS - não estou usando DBGrid nem Navigator, os dados da tabela estão num stringgrid, componente que achei mais apropriado para a aplicação em questão.Usando StringGrid seria o mesmo que usar uma matriz de linha e coluna ... neste caso os updates de tabela devem ser feitos usando um comando FOR NEXT acessando a sua tabela ( inserindo ou editando os campos dos registros ) para depois dar o comando Post e ApplayUpdates.Fica mais trabalhoso ... prefira usar o DBgrid é muito mais fácil e praticoabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Julho 22, 2009 Autor Denunciar Share Postado Julho 22, 2009 ok, sei que é mais trabalhoso e que é através do for mas queria saber se é através de um componente Table ou Query que faço... Se puder dar um exemplo agradeço... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Julho 23, 2009 Denunciar Share Postado Julho 23, 2009 Voce pode usar Table ou Query ... basta definir os campos que receberão os valores das celulas do stringgrid ... depois passo um exemploabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Julho 23, 2009 Autor Denunciar Share Postado Julho 23, 2009 Grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Julho 23, 2009 Denunciar Share Postado Julho 23, 2009 exemplo:procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin for i := 1 to StringGrid1.RowCount-1 do begin //CDS_Ms.Last; CDS_Ms.Append; CDS_Ms.Edit; CDS_MsCampoA.Value := StringGrid1.Cells[0,i]; CDS_MsCampoB.Value := StringGrid1.Cells[1,i]; CDS_MsCampoC.Value := StringGrid1.Cells[2,i]; CDS_MsCampoD.Value := StringGrid1.Cells[3,i]; CDS_MsCampoE.Value := StringGrid1.Cells[4,i]; CDS_MsCampoF.Value := StringGrid1.Cells[5,i]; CDS_MsCampoG.Value := StringGrid1.Cells[6,i]; CDS_MsCampoH.Value := StringGrid1.Cells[7,i]; CDS_MsCampoI.Value := StringGrid1.Cells[8,i]; CDS_MsCampoJ.Value := StringGrid1.Cells[9,i]; CDS_Ms.Post; CDS_Ms.ApplyUpdates(-1); end; end;Para cada campo da tabela voce vai jogar o conteudo da celula ( Coluna , Linha )abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Julho 24, 2009 Autor Denunciar Share Postado Julho 24, 2009 Olá Jhonas...Olhando seu post, vejo que eu apenas não havia colocado um append antes do edit...Vou ver se funciona... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Julho 24, 2009 Autor Denunciar Share Postado Julho 24, 2009 Não funcionou...for IntX:= 1 to StringGrid1.RowCount -1 do begin Query2.Append; Query2.Edit; Query2.FieldByName('campo').Value:= 0; Query2.Post; Query2.ApplyUpdates(); end;msg de erro: 'Query2: Cannot modify a read-only-dataset' Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Julho 24, 2009 Denunciar Share Postado Julho 24, 2009 msg de erro: 'Query2: Cannot modify a read-only-dataset'Deixe a propriedade RequestLive = trueabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Julho 24, 2009 Autor Denunciar Share Postado Julho 24, 2009 olámudei e a mensagem mudou para "Table is ready only" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Julho 24, 2009 Autor Denunciar Share Postado Julho 24, 2009 tem que ligar a Query a algum componente UpdateSQL? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Julho 24, 2009 Denunciar Share Postado Julho 24, 2009 tem que ligar a Query a algum componente UpdateSQL?Use então 1 query, 1 DataSetProvider, 1 ClientDataSet e 1 DataSourceprocedure TForm1.Button1Click(Sender: TObject); var IntX : integer; begin Query2.Active := false; ClientDataSet2.Active := false; Query2.Active := true; ClientDataSet2.Active := true; for IntX:= 1 to StringGrid1.RowCount -1 do begin ClientDataSet2.Append; ClientDataSet2.Edit; ClientDataSet2.FieldByName('campo').Value:= 0; ClientDataSet2.Post; ClientDataSet2.ApplyUpdates(); end; end;OBS: procure sempre usar este jogo de componentesobject Query1: TQueryobject ClientDataSet1: TClientDataSetobject DataSetProvider1: TDataSetProviderobject DataSource1: TDataSourceouobject IBQuery1: TIBQueryobject ClientDataSet1: TClientDataSetobject DataSetProvider1: TDataSetProviderobject DataSource1: TDataSourceabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Julho 25, 2009 Autor Denunciar Share Postado Julho 25, 2009 Não consigo fazer este código funcionar.Já fiz com query, com table, query + clientdataset e nada, que zica!!!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Julho 25, 2009 Denunciar Share Postado Julho 25, 2009 Fiz um teste assim e está funcionandoprocedure TForm1.Button1Click(Sender: TObject); var IntX : integer; begin Query2.Active := false; ClientDataSet2.Active := false; Query2.Active := true; ClientDataSet2.Active := true; for IntX:= 1 to StringGrid1.RowCount -1 do begin ClientDataSet2.Append; ClientDataSet2.Edit; ClientDataSet2.FieldByName('campoA').Value:= StringGrid1.Cells[0,IntX]; ClientDataSet2.FieldByName('campoB').Value:= StringGrid1.Cells[1,IntX]; ClientDataSet2.FieldByName('campoC').Value:= StringGrid1.Cells[2,IntX]; ClientDataSet2.FieldByName('campoD').Value:= StringGrid1.Cells[3,IntX]; ClientDataSet2.FieldByName('campoE').Value:= StringGrid1.Cells[4,IntX]; ClientDataSet2.Post; ClientDataSet2.ApplyUpdates(); end; end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Manoel Zancheta
Olá.
Precisei usar SQL Server 2005 e usei a BDE para acesso. Está tudo normal, só não estou conseguindo fazer updates nas tabelas.
PS - não estou usando DBGrid nem Navigator, os dados da tabela estão num stringgrid, componente que achei mais apropriado para a aplicação em questão.
Grato!
Link para o comentário
Compartilhar em outros sites
13 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.