Ir para conteúdo
Fórum Script Brasil
  • 0

SQL Server 2005 e BDE


Manoel Zancheta

Pergunta

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

  • 0
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 pratico

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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'

Link para o comentário
Compartilhar em outros sites

  • 0
tem que ligar a Query a algum componente UpdateSQL?

Use então 1 query, 1 DataSetProvider, 1 ClientDataSet e 1 DataSource

procedure 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 componentes

object Query1: TQuery

object ClientDataSet1: TClientDataSet

object DataSetProvider1: TDataSetProvider

object DataSource1: TDataSource

ou

object IBQuery1: TIBQuery

object ClientDataSet1: TClientDataSet

object DataSetProvider1: TDataSetProvider

object DataSource1: TDataSource

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz um teste assim e está funcionando

procedure 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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...