Jump to content
Fórum Script Brasil
  • 0

Verifica A Existencia De Um Campo ( Coluna )


Guest --Luciano --
 Share

Question

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 to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...