DataBinding e trabalho em camadas
O recurso de vincular os objetos do formulário a uma origem de dados, tal como um dataset, é um poderoso recurso de RAD (desenvolvimento rápido de aplicações)
Quando estamos desenvolvendo em camadas, porém, temos um pequeno problemas. As instruções que realizam o dataBinding são inseridas no InitializeComponent do form, enquanto que a chamada do componente que irá trazer os dados fica normalmente no load.
A chamada do componente tipicamente seria algo como:
ds1=obj.lerdados()
O problema é que no momento em que fazemos isso estamos destruindo a instância do dataset existente na variável ds1 e inserindo nesta variável um novo dataset, vindo do componente.
O problema disso é que os databindings neste momento já haviam sido realizados com um ponteiro apontando para o dataset anterior. Ao recebermos o novo, todos os databindings se perdem.
Para contornar este problema podemos fazer o seguinte:
dim dstmp as dataset
dstmp=obj.lerdados
ds1.merge(dstmp)
Com esse código utilizamos uma variável temporária para receber o dataset do componente e depois realizamos um merge. Desta forma o ponteiro de objeto original não é destruido, apenas importa os dados do dataset vindo do componente.