Array
(
)

varrendo e quot;Editandoquot; os registros de uma tabela

Mahdak
   - 21 mar 2006

O código abaixo teria que fazer o seguinte teóricamente:
- Gostaria de trocar os dados que exitem na tabela materiais, referente aos campos ´tipo de materiais´, ´Autores´, ´Editoras´ e ´Areas´
Atualmente nesses campos estão os nomes de tais referencias do tipo ´Autor = CLube Delphi´... gostaria de ir na tabela autores, fazer uma
verificação de qual é o código do autor ´clube delphi´..
- Em seguida aloco esse código numa vaiavel, excluo o registro atual da tabela materiais ´em um IBDataSet diferente´ e insiro ao invés do nome do autor, o código.
- Fasso isso para todos os campos da tabela acima citado.
- Nao estou dando um Tabela.Edit, por que nao está funcionando comigo aqui, entao estou fazendo assim, só que nao não acontece nada... os registros continuam
iguaizinhos estavam...

Componentes usados: IBDataSet, IBTransaction, IBDatabase, DataSource
Delphi: 7
Banco: Firebird 1.5
Campos da tabela:
-----------------
´CODIGO´INTEGER NOT NULL,
´REFERENCIA´VARCHAR(11) NOT NULL,
´NOME´VARCHAR(100) NOT NULL,
´QUANTIDADE´VARCHAR(50),
´TIPO´VARCHAR(50),
´AUTOR´VARCHAR(100),
´SINOPSE´VARCHAR(1000),
´EDITORA´VARCHAR(50),
´EXEMPLAR´VARCHAR(50),
´VOLUME´VARCHAR(50),
´EDICAO´VARCHAR(50),
´ANO_EDICAO´VARCHAR(50),
´LOCAL´VARCHAR(50),
´AREA´VARCHAR(50),
´STATUS´VARCHAR(50),
´RESERVA´VARCHAR(50),
CONSTRAINT ´PK_LIVROS´ PRIMARY KEY (´CODIGO´)

Bom espero ter sido claro, se alguem puder me ajudar a achar o problema nesse código agradeceria e muito

#Código


procedure TForm1.Button1Click(Sender: TObject);
var
Codigo,Referencia,Nome,Quantidade,Sinopse,Exemplar,Volume,Edicao,Ano_Edicao,Local : String;
ti, ti2, au, au2, ed, ed2, ar, ar2, co : String;
begin
Tbl_Materiais.First;
while not Tbl_Materiais.Eof do
begin
Ti := Tbl_MateriaisTIPO.AsString;
Tbl_Tipo.Close;
Tbl_Tipo.SelectSQL.Clear;
Tbl_Tipo.SelectSQL.Add(´SELECT * from TIPO_MATERIAL WHERE TIPO = :Tipo´);
Tbl_Tipo.ParamByName(´Tipo´).AsString:=Ti;
Tbl_Tipo.Open;
ti2 := Tbl_TipoCODIGO.AsString;

Au := Tbl_MateriaisAUTOR.AsString;
Tbl_Autores.Close;
Tbl_Autores.SelectSQL.Clear;
Tbl_Autores.SelectSQL.Add(´SELECT * from Autores WHERE AUTOR = :Autor´);
Tbl_Autores.ParamByName(´Autor´).AsString:=Au;
Tbl_Autores.Open;
Au2 := Tbl_AutoresCODIGO.AsString;

Ed := Tbl_MateriaisEDITORA.AsString;
Tbl_Editoras.Close;
Tbl_Editoras.SelectSQL.Clear;
Tbl_Editoras.SelectSQL.Add(´SELECT * from Editoras WHERE EDITORA = :Editora´);
Tbl_Editoras.ParamByName(´Editora´).AsString:=Ed;
Tbl_Editoras.Open;
Ed2 := Tbl_AutoresCODIGO.AsString;

Ar := Tbl_MateriaisAREA.AsString;
Tbl_Areas.Close;
Tbl_Areas.SelectSQL.Clear;
Tbl_Areas.SelectSQL.Add(´SELECT * from Area WHERE NOME = :Area´);
Tbl_Areas.ParamByName(´Area´).AsString:=Ar;
Tbl_Areas.Open;
Ar2 := Tbl_AreasCODIGO.AsString;


Codigo := Tbl_MateriaisCODIGO.AsString;
Referencia := Tbl_MateriaisREFERENCIA.AsString;
Nome := Tbl_MateriaisNOME.AsString;
Quantidade := Tbl_MateriaisQUANTIDADE.AsString;
Sinopse := Tbl_MateriaisSINOPSE.AsString;
Exemplar := Tbl_MateriaisEXEMPLAR.AsString;
Volume := Tbl_MateriaisVOLUME.AsString;
Edicao := Tbl_MateriaisEDICAO.AsString;
Ano_Edicao := Tbl_MateriaisANO_EDICAO.AsString;
Local := Tbl_MateriaisLOCAL.AsString;

// exclui
Co := Tbl_MateriaisCODIGO.AsString;
Tbl_Exclui_Ma.Close;
Tbl_Exclui_Ma.SelectSQL.Clear;
Tbl_Exclui_Ma.SelectSQL.Add(´Delete From LIVROS Where CODIGO = :Cod´);
Tbl_Exclui_Ma.Params[0].AsString;
Tbl_Exclui_Ma.ParamByName(´Cod´).AsString:=Co;
Tbl_Exclui_Ma.ExecSql;


Tbl_Materiais.Open;
Tbl_Materiais.Insert;

Tbl_MateriaisCODIGO.AsString := Codigo;
Tbl_MateriaisREFERENCIA.AsString := Referencia;
Tbl_MateriaisNOME.AsString := Nome;
Tbl_MateriaisQUANTIDADE.AsString := Quantidade;
Tbl_MateriaisTIPO.AsString := Ti2;
Tbl_MateriaisAUTOR.AsString := Au2;
Tbl_MateriaisSINOPSE.AsString := Sinopse;
Tbl_MateriaisEDITORA.AsString := Ed2;
Tbl_MateriaisEXEMPLAR.AsString := Exemplar;
Tbl_MateriaisVOLUME.AsString := Volume;
Tbl_MateriaisANO_EDICAO.AsString := Ano_Edicao;
Tbl_MateriaisLOCAL.AsString := Local;
Tbl_MateriaisAREA.AsString := Ar2;

Tbl_Materiais.Post;
Tbl_Materiais.ApplyUpdates;

Tbl_Materiais.Next;

end;
end;