GARANTIR DESCONTO

Fórum Recuperar valores do HTMl e salvar na tabela #351066

26/12/2007

0

amigos, estou com um problemasso aqui...
tenho um arquivo html com checkboxes e edits(txtfields). cada checkbox tem o seu edit.
gostaria de ir recuperando o valor do checkbox e do edit (quando o checkbox estiver checked=true) e ir salvando tais valores na tabela. até o momento eu consigo salvar os valores do checkbox na tabela, porém os valores do edit se perdem ao tentar salva-los....
na linha onde está o codigo ´ShowMessage(´edit: ´ + ResultSubs[i]);´ o valor é recuperado corretamente


var
Doc: IHTMLDocument2;
 I: Integer;
 Element: OleVariant;
 Elements: IHTMLElementCollection;

 ValueCheck,ResultSubs : array[0..999] of string ;

for I := 0 to Elements.length - 1 do
   begin
      Element := Elements.item(I, varEmpty);

          if (UpperCase(Element.tagName) = ´INPUT´) and (UpperCase(Element.Type) = ´CHECKBOX´) then
          begin
              if (Element.Checked = true) then
              begin
                ValueCheck[i] := Element.value;
                 //ShowMessage(´CheckBox: ´ + ValueCheck[i]);
              end;
          end
            else
              begin
                // edit responável pelo resultado da substancia escolhida
                if (UpperCase(Element.tagName) = ´INPUT´) and (UpperCase(Element.Type) = ´TEXT´) then
                begin
                  if (Element.value <> ´´) then
                  begin
                    ResultSubs[i] := Element.Value;
                    //ShowMessage(´edit: ´ + ResultSubs[i]);
                  end;
                end;
              end;
   end; // final do laço For

// insere as substâncias e seus resultados no CdsSubstancias
 cdsSubstancias.Open;
   for I := 0 to 999 do
   begin
    if ValueCheck[i] <> ´´ then
    begin      
      cdsSubstancias.Insert;
      cdsSubstanciasID.AsInteger        := StrToInt(ValueCheck[i]);
      cdsSubstanciasResultado.AsString  := ResultSubs[i]; // todo: verificar por que nao esta inserindo esse valor no cds, uma vez que o valor é recuperado corretamente no showMessage acima
      cdsSubstancias.Post;
    end;
   end; 



conto com vossa ajuda...
obrigado


Mahdak

Mahdak

Responder

Posts

26/12/2007

Mahdak

esqueci de postar como carregar o arquivo na var doc...
Obs: Wb = TWebbrowser

Doc := Wb.Document as IHTMLDocument2;
Elements := Doc.All;


Responder

Gostei + 0

26/12/2007

Mahdak

resolvido com a ajuda do amigo Marcelo Moreira

resolução:

procedure RecuperaValorHTML;
var
 Doc: IHTMLDocument2;
 I: Integer;
 Element: OleVariant;
 Elements: IHTMLElementCollection;

 anexo : string;

 Checado : Boolean;
 StringTemp,ValueCheck,ResultSubs : string;

begin
Checado := false;
Doc := Wb.Document as IHTMLDocument2;
Elements := Doc.All;

   for I := 0 to Elements.length - 1 do
   begin
      Element := Elements.item(I, varEmpty);

          if (UpperCase(Element.tagName) = ´INPUT´) and (UpperCase(Element.Type) = ´CHECKBOX´) then
          begin
              if (Element.Checked = true) then
              begin
                ValueCheck := Element.value;
                StringTemp := ValueCheck;
                Checado := true;
                //ShowMessage(´CheckBox: ´ + ValueCheck[i]);
              end;
          end;

          // edit responável pelo resultado da substancia escolhida
          if (UpperCase(Element.tagName) = ´INPUT´) and (UpperCase(Element.Type) = ´TEXT´) then
          begin
              ResultSubs := ReplaceStr(RemoveChar(Element.Value),´.´,´,´);// transforma a variavel em apenas numeros e virgula
              //ShowMessage(´edit: ´ + ResultSubs[i]);
              if Checado = true then
              begin
                Checado := false;
                InsereSubs( StringTemp, ResultSubs);
              end;
          end;

   end; // final do laço For
end;

procedure insereSubs(ID, Resultado: string);
begin
  // insere as substâncias e seus resultados no CdsSubstancias
   cdsSubstancias.Open;
   cdsSubstancias.Insert;
   cdsSubstanciasID.AsInteger        := StrToint(ID);
   cdsSubstanciasResultado.AsString  := Resultado;
   cdsSubstancias.Post;
end;



valeu marcelo! e valeu a todos que observaram esse tópico

abração!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar