fiz a rotina abaixo no delphi 2009 win32 usando intraweb.. esse codigo le um
arquivo que acabou de ser upado pro servidor pelo visitante da pagina.
ele nao acha nada e quando acha fica tudo como se fosse
'#0''#0''#0''#0''#0''#0''#0''#0''#0''#0''#0''#0' e fica tudo null na rotina
abaixo.
pequei o mesmo codigo joquei no intraweb do delphi 2006 e funcionou. será um
bug ou alguma configuração que eu tenho que setar por causa do unicode ou o
que?

a rotina:

procedure TformEnviarFornecedor.IWButton1Click(Sender: TObject);
var
  txt      : textfile;
  I        : Integer;
  linha    : string;
  migradas : Integer;
  erros    : integer;
  lerro    : string;
  lerrof   : string;

  procedure insericampo(campo: string; posicaoini, posicaoFim: integer;
padrao: string);
  var s: string;
  begin
   s := string(copy(linha,posicaoini, posicaoFim));
   if trim(s) = '' then s := 'null';
   if (s = 'null')
    then self.ds.dataset.FieldByName(campo).AsString := padrao
    else self.ds.dataset.FieldByName(campo).AsString :=
TrimLeft(TrimRight(s));
   Delete(linha,1,posicaofim);
  end;

begin
try
 IWFile1.SaveToFile;
 WebApplication.ShowMessage(Format('Arquivo "%s" enviado com sucesso!',
[IWFile1.Filename]));
 //tratando o arquivo...
 AssignFile(txt, extractfilepath(paramstr(0))+IWFile1.Filename);
 Reset(Txt);
 migradas                        := 0;
 erros                           := 0;
 ds.DataSet.Active               := false;
 TADOQuery(ds.dataset).SQL.Text  := 'select * from fornecedor where cnpj =
'+#39+'000'+#39;
 ds.DataSet.Active               := true;
 lerrof                          := '';
 while not eof(txt) do
  begin
   Readln(txt,linha);
   try
    lerro := linha;
    self.ds.DataSet.insert;
    insericampo('codigo',1,15,'null');
    insericampo('razao',1,39,'null');
    insericampo('cnpj',1,22,'null');
    insericampo('ie',1,18,'null');
    insericampo('endereco',1,30,'null');
    insericampo('numero',1,14,'0');
    insericampo('bairro',1,23,'null');
    insericampo('uf',1,2,'null');
    self.ds.DataSet.Post;
    migradas := migradas +1;
   except
    if ds.dataset.state = dsinsert
     then ds.dataset.cancel;
    erros := erros +1;
    lerrof := lerrof + #13+ lerro;
   end;
  end;
 closefile(txt);
 merros.lines.clear;
 merros.lines.add('Ação terminada');
 merros.lines.add('Total de dados migrados : '+inttostr(migradas));
 merros.lines.add('Total de Erros : '+inttostr(erros));
 merros.lines.text := merros.lines.text + lerrof;
 except
  WebApplication.ShowMessage(Format('Erro ao enviar o arquivo "%s" !',
[IWFile1.Filename]));
 end;
end;


-- 
-------------------------------------------------------------------
Rafael jorge alves (Analista/desenvolvedor)

www.sistemafocus.com.br
sistema focus de gestão comercial e serviços em informatica.
-------------------------------------------------------------------


[As partes desta mensagem que não continham texto foram removidas]

Responder a