COMO VERIFICAR CAMPO NULO NO BANCO DE DADOS?

DEC0 21/10/2009 18:28:04
#325994
Criei uma rotira para pegar os dados de um RecordSet e, ao pegá-los, veríficar se ele está vazio. Só ao rodar o programa, mesmo que o banco de dados esteja com a coluna pedida vazia, ele não mostra a mensagem de erro e quando ela está com a coluna preenchida ele não mostra as informações referêntes a ela. Sendo que se eu tirar o loop While ele pega os dados corretamente no caso de haver conteúdo no banco, e quando não há ele dá o seguinte erro: [Ô]Tentativa inválida de leitura quando não existem dados[Ô].
Como eu posso fazer pra realizar essa veríficação? Segue o código para melhor copreenção:

While(drM.Reader())
{
if(drM.IsDBNull(1))
{
MessageBox.Show([Ô]Não há computador registrado com o patrimônio sugerido![Ô]);
}
else
{

//preenche os Labels com os dados do banco sobre o computador
lblPatrimonioMicro.Text =drM[1].ToString();
lblMarcaMicro.Text = drM[2].ToString();
lblModeloMicro.Text = drM[3].ToString();
lblSenhaAdmin.Text = drM[4].ToString();
lblLocalMicro.Text = drM[5].ToString();

//if para marcar o checkbox da garantia
if (drM[6].ToString() == [Ô]True[Ô])
{
cbGarantia.Checked = true;
}
else
{
cbGarantia.Checked = false;
}

lblSerialMicro.Text = drM[7].ToString();
lblPatrimonioMonitor.Text = drM[8].ToString();
lblSerialMonitor.Text = drM[9].ToString();
lblMarcaMonit.Text = drM[10].ToString();
lblModeloMonit.Text = drM[11].ToString();
lblEstadoMonit.Text = drM[12].ToString();
lblLocalMonitor.Text = drM[13].ToString();
lblNomeRede.Text = drM[14].ToString();
lblEstadoMicro.Text = drM[15].ToString();
lblIpRede.Text = drM[16].ToString();

//fecha a conexão com banco de dados
conn.Close();
}
}
RCMRO 29/10/2009 07:53:48
#326493
Vamos lá. Para evitar problemas com colunas nulas, coloca o código abaixo em todas pode PODEM ser vazias:

lblSerialMicro.Text = (drM.IsDBNull(7) || String.IsNullOrEmpty(drM.GetString(7)) ? [Ô][Ô] : db.GetString(7)

Tenta isso. Deve resolver...
DEC0 03/11/2009 18:37:32
#326838
Não deu muito certo não, eu coloquei lá mas está dando o seguinte erro:

The name [ô]db[ô] does not existe in the current context.

Eu tentei trocar o [ô]db[ô] pelo RecordSet (drM) mas não funcionou também.
DEC0 03/11/2009 19:27:18
#326842
Cara, eu consegui, com ajuda de uma amiga achar um jeito de fazer isso. Segue o código que funcionou pra fazer o que eu queria:

if(drM.Read())
{
//preenche os Labels com os dados do banco sobre o computador
lblPatrimonioMicro.Text =drM[1].ToString();
lblMarcaMicro.Text = drM[2].ToString();
lblModeloMicro.Text = drM[3].ToString();
lblSenhaAdmin.Text = drM[4].ToString();
lblLocalMicro.Text = drM[5].ToString();

//if para marcar o checkbox da garantia
if (drM[6].ToString() == [Ô]True[Ô])
{
cbGarantia.Checked = true;
}
else
{
cbGarantia.Checked = false;
}

lblSerialMicro.Text = drM[7].ToString();
lblPatrimonioMonitor.Text = drM[8].ToString();
lblSerialMonitor.Text = drM[9].ToString();
lblMarcaMonit.Text = drM[10].ToString();
lblModeloMonit.Text = drM[11].ToString();
lblEstadoMonit.Text = drM[12].ToString();
lblLocalMonitor.Text = drM[13].ToString();
lblNomeRede.Text = drM[14].ToString();
lblEstadoMicro.Text = drM[15].ToString();
lblIpRede.Text = drM[16].ToString();
}
else
{
MessageBox.Show([Ô]Não há computador registrado com o patrimônio sugerido![Ô]);
}
//fecha a conexão com banco de dados
drM.Close();
conn.Close();
}

Isso funcionou perfeitamente. Vlw pela ajuda.
Tópico encerrado , respostas não são mais permitidas