SQL Error code 104
Opa pessoal,
Bem, no codigo abaixo, a partir da terceira vez que o loop for puxa a procedure Abretabela, o valor da variavel NomeTabela fica vazio e da o seguinte erro SQL:
´Invalid token. Dynamic SQL Error. SQL error code = -104. Unexpected end of command line 1, column 10´.
Bem, o q sera que pode ser?
Grato!
Bem, no codigo abaixo, a partir da terceira vez que o loop for puxa a procedure Abretabela, o valor da variavel NomeTabela fica vazio e da o seguinte erro SQL:
´Invalid token. Dynamic SQL Error. SQL error code = -104. Unexpected end of command line 1, column 10´.
Bem, o q sera que pode ser?
Grato!
procedure AbreTabela(var tabela:TpFiBDataset;NomeTabela:string); begin tabela.Close; tabela.SQLs.SelectSQL.Clear; tabela.SQLs.SelectSQL.add(´SELECT * FROM ´ + NomeTabela); MensagemLOG:=´Nome da tabela: ´+NomeTabela; FPrincipal.GeraLOG(MensagemLOG); tabela.Open; end; procedure TFPrincipal.Migrar(); var i,j:integer; TabelaAntiga:string; arTabelas:array of string; TamArray:integer; begin ClientDataSet.Edit; ClientDataSet.Active; with FPrincipal.DataBaseBDANTIGO, ConnectParams do begin DBName := ´localhost:´+CaminhoBDANTIGO; UserName := ´SYSDBA´; ConnectParams.Password := ´masterkey´; SQLDialect := 3; try Open; except on E: Exception do begin MessageDlg(´Impossivel conectar com Banco antigo.´#13 + E.Message, mtError, [mbOk], 0); MensagemLOG:=´impossivel conectar com banco antigo.´; GeraLOG(MensagemLOG); end; end; end; with FPrincipal.DataBaseBDNOVO, ConnectParams do begin DBName := ´localhost:´+CaminhoBDNOVO; ConnectParams.UserName := ´SYSDBA´; Password := ´masterkey´; SQLDialect := 3; try Open; except on E: Exception do begin MessageDlg(´Impossivel conectar com Banco NOVO.´13 + E.Message, mtError, [mbOk], 0); MensagemLOG:=´impossivel conectar com banco NOVO.´; GeraLOG(MensagemLOG); end; end; FPrincipal.ClientDataSet.First; ClientDataSet.Active := True; ClientDataSet.Open; if ClientDataSet.Active then begin MensagemLOG:=´ClientDataSet Aberto.´; GeraLOG(MensagemLOG); end; for i := 0 to FPrincipal.ClientDataSet.RecordCount - 1 do begin //Se for diferente, abro a tabela if TabelaAntiga <> FPrincipal.ClientDataSet.FieldByName(´TB_ANTIGO´).AsString then begin TamArray:=Length(arTabelas) + 1; setLength(arTabelas,TamArray); //Aumento o tamanho do array arTabelas[TamArray-1]:=FPrincipal.ClientDataSet.FieldByName(´TB_ANTIGO´).AsString; end; TabelaAntiga:=FPrincipal.ClientDataSet.FieldByName(´TB_ANTIGO´).AsString; FPrincipal.ClientDataSet.Next; ClientDataSet.Edit; ClientDataSet.Insert; end; FPrincipal.ClientDataSet.First; TabelaAntiga:=FPrincipal.ClientDataSet.FieldByName(´TB_ANTIGO´).AsString; for I := 0 to LengTh(arTabelas) - 1 do begin AbreTabela(FPrincipal.DataSetBDANTIGO,arTabelas[I]);//Tabela antiga FPrincipal.ClientDataSet.Locate(´TB_ANTIGO´,arTabelas[I],[]);//Posiciona o ponteiro na tabela de dicionario AbreTabela(FPrincipal.DataSetBDNOVO,FPrincipal.ClientDataSet.FieldByName(´TB_NOVO´).AsString); while not FPrincipal.DataSetBDANTIGO.EOF do begin FPrincipal.DataSetBDNOVO.Insert; for j := 0 to FPrincipal.DataSetBDANTIGO.FieldCount - 1 do begin FPrincipal.ClientDataSet.Locate(´TB_ANTIGO,CA_ANTIGO´,VarArrayOf([FPrincipal.ClientDataSet.FieldByName(´TB_ANTIGO´).AsString,FPrincipal.ClientDataSet.FieldByName(´CA_ANTIGO´).AsString]),[]); FPrincipal.DataSetBDNOVO.FieldByName(FPrincipal.ClientDataSet.FieldByName(´TB_NOVO´).AsString).AsString:=FPrincipal.DataSetBDANTIGO.FieldByName(FPrincipal.ClientDataSet.FieldByName(´TB_ANTIGO´).AsString).AsString; end; DataSetBDNOVO.Insert; FPrincipal.DataSetBDNOVO.Post; FPrincipal.DataSetBDANTIGO.Next; end; end; end; end;
Sergiofigueras
Curtidas 0