CONSULTAR ANTES DE CRIAR!!!

JLAUROSOUZA 10/01/2011 12:13:50
#361733
AMIGOS,

TENHO UM PROJETO QUE O USUÁRIO CRIA TODAS AS TABELAS E CAMPOS, MAIS TEM UM PROBLEMA, SE A TABELA OU CAMPO NA TABELA JÁ EXISTE EVIDENTEMENTE GERA UM ERRO.

COMO POSSO PESQUISA SE A TABELA JÁ EXISTE ANTES DE CRIA-LA, E, COMO POSSO PESQUISA SE O CAMPO JÁ EXISTE ANTES DE ADICIONA-LO A TABELA?

AGRADEÇO A AJUDA DE TODOS...


OBS: VB6 x SQLSERVER
MARCOSLING 10/01/2011 12:51:37
#361739
vc pode verificar nas tabelas System do SqlServer
SNNIFFER 10/01/2011 12:53:01
#361740
Acho q isso serve, é um exemplo de criação de uma tabela para cadastro de empresa:

A SQL=[Ô]create table if not exists 'Tabela' - realiza a verificação se a tabela existe e a cria.


[txt-color=#e80000]Public Function CriarTabelaEmpresa()

SQL = [Ô]CREATE TABLE IF NOT EXISTS 'Empresa' ([Ô] _
& [Ô]'razao' varchar(50) NOT NULL default [ô][ô], [Ô] _
& [Ô]'fantasia' varchar(50) NOT NULL default [ô][ô], [Ô] _
& [Ô]'cnpj' varchar(30) NOT NULL default [ô][ô], [Ô] _
& [Ô]'estadual' varchar(25) NOT NULL default [ô][ô], [Ô] _
& [Ô]'endereco' varchar(50) NOT NULL default [ô][ô], [Ô] _
& [Ô]'bairro' varchar(50) NOT NULL default [ô][ô], [Ô] _
& [Ô]'cep' varchar(10) NOT NULL default [ô][ô], [Ô] _
& [Ô]'cidade' varchar(30) NOT NULL default [ô][ô], [Ô] _
& [Ô]'uf' varchar(2) NOT NULL default [ô][ô], [Ô] _
& [Ô]'telefone' varchar(20) NOT NULL default [ô][ô], [Ô] _
& [Ô]'email' varchar(50) NOT NULL default [ô][ô], [Ô] _
& [Ô]'responsavel' varchar(40) NOT NULL default [ô][ô], [Ô] _
& [Ô]'telresponsavel' varchar(20) NOT NULL default [ô][ô], [Ô] _
& [Ô]PRIMARY KEY ('cnpj') [Ô] _
& [Ô]) TYPE=MyISAM[Ô]
gConexao.Execute SQL, , adExecuteNoRecords
End Function[/txt-color]
JLAUROSOUZA 10/01/2011 13:07:51
#361743
AMIGO SNNIFER,

ISSO é MUITO VÁLIDO SIM, MAIS NO MEU CASO NAUM SERVER, PQ SE A TEBALA EXISTE TEM Q SER CRIADA OUTRA TABELA,

EXEMPLOS:

O USUARIO CADASTRO UM NOVO SETOR COM ISSO SERÁ CRIADO UMA NOVA TABELA PARA REFERENCIA DO SETOR, O NOME DA TABELA SERÁ O Q O USUARIO KISER E OS CAMPOS TAMBEM, COM ISSO, SE ELE TENTAR CADASTRA UMA TABELA JÁ EXISTENTE O SISTEMA TEM QUE AVISAR Q O NOME Q A TABELA JÁ EXISTE PARA ELE PODER UTILIZAR OUTRO NOME.

ENTENDEL MEU PROBLEMA AMIGO?
MARCELO.TREZE 10/01/2011 18:03:51
#361781
meu conselho é o seguinte, coloque um treeview em seu projeto, exiba totas as tabelas e campos existentes, quando for criar uma nova tabela, faça uma varredura para verificar se existe a tabela ou os campos, acho que ficará algo bem profissional.

JLAUROSOUZA 10/01/2011 18:07:54
#361782
PARA SABER SE UMA TABELA EXISTE PODE-SE UTILIZAR ISSO:

Public Function ExistTable(Tabela As String) As Boolean

ExistTable = False

Dim RS As ADODB.Recordset
Set RS = New ADODB.Recordset

Set RS = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Tabela, [Ô]TABLE[Ô]))

If Not RS.EOF Then
ExistTable = True
Else
ExistTable = False
End If

RS.Close

End Function


AINDA NAUM DESCOBRI COMO SABER SE UM CAMPO EXISTE!!!
MARCELO.TREZE 10/01/2011 18:13:47
#361783
veja este exemplo que lista todas a tabelas e campos

Private Sub ListarTabelasADO()
Dim Conn As New ADODB.Connection
Dim TablesSchema As ADODB.Recordset
Dim ColumnsSchema As ADODB.Recordset
Conn.Provider = [Ô]MSDASQL[Ô]
Conn.Open [Ô]DSN=...;Database=...;[Ô], [Ô]UID[Ô], [Ô]PWD[Ô]
Set TablesSchema = Conn.OpenSchema(adSchemaTables)
Do While Not TablesSchema.EOF
DoEvents
Set ColumnsSchema = Conn.OpenSchema(adSchemaColumns, _
Array(Empty, Empty, [Ô][Ô] & TablesSchema([Ô]TABLE_NAME[Ô])))
Do While Not ColumnsSchema.EOF
DoEvents
Debug.Print TablesSchema([Ô]TABLE_NAME[Ô]) & [Ô], [Ô] & _
ColumnsSchema([Ô]COLUMN_NAME[Ô])
ColumnsSchema.MoveNext
Loop
TablesSchema.MoveNext
Loop
End Sub
JLAUROSOUZA 10/01/2011 18:32:30
#361784
AMIGO MARCELO,

é +- ISSO Q PRECISO, ESTOU MODIFICANDO O Q ME PASSOU PARA VER SE CHEGO AO RESULTADO ESPERANDO, PRECISO DE ALGO COMO A MINHA POSTAGEM ANTERIOR, ONDE ELE PROCURA A TABELA E RETORNA [Ô]TRUE OU FALSE[Ô], O MESMO PRECISO PARA O CAMPO, ALGO Q A ROTINA PERCORRA A TABELA E VISUALIZA SE EXITE O CAMPO PASSADO POR PARAMETOR, E ME RETORNE, [Ô]TRUE[Ô] SE EXISTIR E [Ô]FALSE[Ô] SE NAUM EXISTIR!!!

MESMO ASSIM OBRIGADO PELA ATENÇÃO, SE EU CONSEGUI RESOLVER FAZENDO ALGUMAS MOTIFICAÇÕES NO EXIMPLO Q VC ME PASSOU VOU POSTAR AKI!!!

JLAUROSOUZA 10/01/2011 18:45:40
#361787
AGORA SIM, O PROBLEMA DO CAMPO TB ESTA RESOLVIDO, GRAÇAS A AJUDA DO NOSSO AMIGO MARCELO!!!!

AI ESTA A FUNCTION.

Function ExistColumn(Tabela As String, Coluna As String) As Boolean

ExistColumn = False

Dim Rc As ADODB.Recordset
Set Rc = New ADODB.Recordset

Set Rc = cn.OpenSchema(adSchemaColumns, _
Array(Empty, Empty, Tabela, Coluna))
If Not Rc.EOF Then
ExistColumn = True
Else
ExistColumn = False
End If

Rc.Close

End Function
Tópico encerrado , respostas não são mais permitidas