Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

axt3k

DataSet obter valor modificado

Mensagens Recomendadas

axt3k

Pessoal estou com um pequeno problema que gostaria que vocês me ajudassem

eu tenho um dataset carregado ligado a uma gridview que serve para modificar valores na base de dados

até ai tudo bem...

No entanto após os valores serem alterados eu preciso de saber quais foram os valores alterados especificamente para poder escrever essa alteração numa outra tabela de histórico! do tipo valor antigo | valor corrigido

Actualmente usava uma dataset auxiliar que era uma copia do dataset original e depois comparava os valores do original com o actual e escrevia na tabela mas esta solução já me está a dar muitos problemas pois a tabela em causa tem muitos campos e de diferentes tipos e com dbnulls ao barulho isto fica intragavel de controlar...

Actualmente estava a explorar este método

    Dim ModifiedChildRecords As DataTable = _

        dsNorthwind1.Orders.GetChanges(DataRowState.Modified)

para sacar as linhas modificadas no entanto este metodo devolveme a linha toda que foi modificada e eu só preciso do valor do campo em especifico que foi alterado!

Aguardo pela vossa sabedoria!  :P


www.lsantos.info

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
axt3k

Pelo que percebi isso é para a linha toda e não para um campo específico...

E sinceramente preferia isto mesmo no codigo! :bored:


www.lsantos.info

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jnetic

Quando há alterações em qualquer um dos campos, isso afecta toda a linha. Por isso não encontrarás um método directo, nem nenhuma instrução que te diga especificamente, qual o campo que foi alterado.

Repara que, se, por exemplo, houver alteração em numa Coluna "A", da linha 1 e também da Coluna "B" da linha 2, não seria possível esquematizar numa tabela (de campos afectados) apenas uma coluna com ambos os valores, devido ao objecto que tem  características próprias, como: tipo, formato ou tamanho.

Se realmente necessitas de ter isso assim, terás que o fazer por código: podes comparar as linhas antes e depois das alterações, e depois devolver um código binário para indicar-te onde foi efectuada a alteração. Por exemplo, numa tabela com seis colunas, se devolver uma string "000100" sabes que a alteração foi na 4a coluna; para "110001" sabes que foi na 1a, 2a e 6as colunas. (também é válido se preferires um Array de Booleans)

Se, por acaso, sabes que apenas a coluna x é possível de ser afectada, o problema então não se coloca. É pegares na DataTable e seleccionares apenas a coluna específica.

🤔

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
axt3k

Pois mas isso é basicamente o que já tenho... e que não queria adoptar...

No entanto é que pode acontecer existirem Nulls na tabela em causa e quando fasso uma comparação de dbnull com qualguer valor (int,string) etc... já se sabe que estoira....

Ninguém com uma ideia fantabulástica ?


www.lsantos.info

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ByMySlf

No exemplo que te mostrei podes retirar apenas os campos que quiseres. Basta, para isso, escreveres na query os campos que pretendes extrair.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.