[duvidas] TABELA EM XML

21/07/2008

2

bom dia...estou com uma duvida ..tenho uma tabela em xml e estou usando o comando Append,
begin

    FileLB := TFileListBox(Source);
    Lista.Append;
    Lista.FieldByName(´Status´).asstring :=  ´Não Veiculada´;
    Lista.FieldByName(´Arquivo´).asstring :=  FileLB.FileName;
    Lista.FieldByName(´Descricao´).asstring := ExtractFileName(FileLB.FileName);
    Lista.Post;
    Edit2.Text:=IntToStr(Lista.RecordCount);
  end;


eu gostaria de saber como eu posso inserir um registro entre o campo 1 e o campo 2....ou campo 3 entre o campo 4 e assim por diante...
alguem pode me ajudar


Responder

Posts

21/07/2008

Steve_narancic

Ao inves de append, utilize o comando INSERT


Responder

21/07/2008

Hammergod

Ao inves de append, utilize o comando INSERT

não é bem isso...o insert ele insere do começo...
o append ele coloca no fim...eu queria fazer ...como eu colocasse um registro entre dois....tipo tem o registro 1 e 2...
se eu colocasse o proximo entre o 1 e 2 o q eu colocar fikara na possição 2 e o 2 antigo passar ser a posição 3..


Responder

22/07/2008

Brunodsr

A resposta é INSERT mesmo brother.

Posicione o dataset no primeiro registro e use o comando insert.. O resultado será exatamente o que vc falou.

O append insere no final da tabela, mas o insert não, ele insere onde estiver posicionado.

Espero ter ajudado.


Responder

23/07/2008

Hammergod

A resposta é INSERT mesmo brother. Posicione o dataset no primeiro registro e use o comando insert.. O resultado será exatamente o que vc falou. O append insere no final da tabela, mas o insert não, ele insere onde estiver posicionado. Espero ter ajudado.

como eu faço para posicionar o dataset....
exemplo quero colacar entre o registro 4 e 5......
é isso q eu quero fazer


Responder

23/07/2008

Brunodsr

Cara.. isso ai não é automático não.

Vc tem que saber quem é o registro que vc quer posicionar. Tipo, quer posicionar no quinto registro ou no registro que tá na posição 5?

Exemplo: Eu quero posicionar no registro de código ´AA00441´. Nesse caso, eu uso a função locate do CDS (TDataSet).

function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override;

  //Ex.: Posicionando no registro q AA00441 e inserindo logo em seguida
  if CDS_Teste.Locate(´Codigo´, ´AA00441´, [loCaseInsensitive]) then
  begin
    CDS_Teste.Insert;
    ...
    ...
    CDS_Teste.Post;
  end;


Espero ter ajudado. :)


Responder

23/07/2008

Hammergod

Cara.. isso ai não é automático não. Vc tem que saber quem é o registro que vc quer posicionar. Tipo, quer posicionar no quinto registro ou no registro que tá na posição 5? Exemplo: Eu quero posicionar no registro de código ´AA00441´. Nesse caso, eu uso a função locate do CDS (TDataSet).
function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override;

  //Ex.: Posicionando no registro q AA00441 e inserindo logo em seguida
  if CDS_Teste.Locate(´Codigo´, ´AA00441´, [loCaseInsensitive]) then
  begin
    CDS_Teste.Insert;
    ...
    ...
    CDS_Teste.Post;
  end;
Espero ter ajudado. :)

opa estamos quase la...esse locaseinsensitive eu havia feito ja,...
porem quando o mouse esta em cima da dbgrid....como eu sei em qual lugar ele esta tipo...no campo descrição...o mouse esta nesse campo por exemplo....em qual registro da descricao ele esta ...no 1,2,3,4 eu nao sei...
como eu faço para saber em qual ele esta ....
ai eu pegaria a descrição e usaria o caseinsensitive para posicionar ele...e depois dar o insert


Responder

23/07/2008

Brunodsr

Cara.. pelo mouse em cima eu nao sei nao. Mas se vc clicar em cima do registro, o dataset ja vai estar posicionado nele, dai vc nem precisa do locate.

Eu pensei em vc usar os eventos do hint do dbgrid, mas é gambiarra demais. Se outro brother aí puder ajudar. blz?

Foi quase.. heheh


Responder

23/07/2008

Hammergod

Cara.. pelo mouse em cima eu nao sei nao. Mas se vc clicar em cima do registro, o dataset ja vai estar posicionado nele, dai vc nem precisa do locate. Eu pensei em vc usar os eventos do hint do dbgrid, mas é gambiarra demais. Se outro brother aí puder ajudar. blz? Foi quase.. heheh
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  Coordenadas: TGridCoord;
  lNome: string;
  FileLB: TFileListBox;
begin
  Lista.open;

    begin
      Coordenadas := THackGrid(dbgrid1).MouseCoord(X,Y);
      if (Coordenadas.X > 0) AND (Coordenadas.Y > 0) then
      begin
        lNome := Lista.FieldByName(´Descricao´).AsString;
        with THackGrid(dbgrid1) do
        begin
         lista.MoveBy(Coordenadas.Y - Row);
         lista.Insert;
         Lista.FieldByName(´Status´).asstring :=  ´Não Veiculada´;
         Lista.FieldByName(´Arquivo´).asstring :=  FileLB.FileName;
         Lista.FieldByName(´Descricao´).asstring := ExtractFileName(FileLB.FileName);
         Lista.Post;
        end;
      end;
    end;
end;

consegui...era mais ou menos assim


Responder

23/07/2008

Brunodsr

mto bom cara.. ficou mais simples do que eu imaginei.

Um abraco


Responder

24/07/2008

Hammergod

mto bom cara.. ficou mais simples do que eu imaginei. Um abraco


só q essa rotina é para usar no dragmode dragdrop


Responder