Ir para conteúdo
Fórum Script Brasil
  • 0

Verifica A Existencia De Um Campo ( Coluna )


Guest --Luciano --

Pergunta

Guest --Luciano --

Amigos,

To iniciando no VB ...e minha duvida é a seguinte:

Tenho uma função que cria uma coluna em uma determinada tabela só que preciso verificar a existencia dessa coluna antes pois se for criá-la quando ela já existe gera um erro:

A função cria o campo normalmente só que preciso só verificar a existencia do campo...

O código é esse:

Dim cat As New ADOX.Catalog

Dim tbl As ADOX.Table

adoc.RecordSource = "Select * from Fornecedores where nome='" & txtNome.Text & "'"

cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\banco.mdb;Persist Security Info=False"

Set tbl = cat.Tables("tabela")

tbl.Columns.Append txtNome.Text, adSmallInt

Set cat = Nothing

Exit Sub

Ainda não encontrei nada no forum a respeito.

alguém pode ajudar?

[]´s

Luciano

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Obrigado por responder Gray...

Fiz o que pediu...

porem quando perceorre a tabela ele localiza uma coluna diferente da que informei e executa a função...

Exemplo, tenho as colunas existentes: maça , banana, uva, pera, mamão.

ele localiza a coluna "uva" e diz ser igual ao que está no textbox e executa:

segue o codigo com o for each:

txtnome.text = "ggg"

Set Tbl = cat.Tables("Tabela")

For Each Columns In Tbl.Columns

If Columns = txtNome.Text Then

MsgBox ("NOme Igual as textbox")

else

MsgBox ("Nome diferente")

' cria a coluna como nome informado...

Tbl.Columns.Append txtNome.Text, adSmallInt

Set cat = Nothing

Exit Sub

End If

Next column

Link para o comentário
Compartilhar em outros sites

  • 0

Sim estão....

estamos no caminho certo...pelo que notei ao posicionar o mouse sobre:

If Columns.Name = txtNome.Text Then

em Columns.Name retorna o nome de uma coluna que existe, e em txtnome.text a coluna que informei...

ou seja, sempre quando informo um nome de coluna que sei que existe na tabela ele sai da condição....

sendo assim , não esta percorrendo todas as colunas como deveria....

[]'s

Luciano

Link para o comentário
Compartilhar em outros sites

  • 0

Solucionado...

Ocorria que ele percorria apenas o primeiro campo (coluna) e saí da condição do loop.

Optei por colocar uma condição diferente para cada loop..funcionou...

segue:

Set Tbl = cat.Tables("Tabela")

For Each Columns In Tbl.Columns

If Columns = txtNome.Text Then

MsgBox ("Nome igual da textbox")

Exit Sub

End If

Next 'Se nome for igual pula pra proxima coluna

For Each Columns In Tbl.Columns

If Columns <> txtNome.Text Then

MsgBox ("Nome diferente cria coluna com o nome então...")

Tbl.Columns.Append txtNome.Text, adSmallInt

Set cat = Nothing

Exit Sub

End If

Next

Obrigado a todos pela atenção!

[]´s

Luciano

Link para o comentário
Compartilhar em outros sites

  • 0

Seria melhor então você fazer assim:

Set Tbl = cat.Tables("Tabela")

achou = False

For Each coluna In Tbl.Columns
    If coluna.Name = txtNome.Text Then
        achou = True
        Exit Sub
    End If
Next

If Not achou Then
    Tbl.Columns.Append txtNome.Text, adSmallInt
End If

Apenas um loop e um if.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...