Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
axt3k

DataSet obter valor modificado

Recommended Posts

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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

🤔

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.