INSERT SQL COM MAIS DE 100 COLUNAS

JOYYY 04/05/2017 03:25:34
#473712
Ola Pessoal,

Estou criando um INSERT para adicionar os dados de um formulário para uma tabela ACCESS.

Porém, acontece que são mais de 100 COLUNAS na tabela. Vou ter que nominar coluna por coluna, como abaixo ou existe uma forma mais prática ser feito?

  [Ô]INSERT INTO tblINFGERAL (Nome, CPF, FONE1..... 

TUNUSAT 04/05/2017 09:10:50
#473715
JOYYY,

Eu acredito que você pode tentar usar o ADOX...
... leia os link abaixo, veja o que você acha.

===================================================================================

ADOX Code Examples in Microsoft Visual Basic
https://docs.microsoft.com/en-us/sql/ado/reference/adox-api/adox-code-examples-in-microsoft-visual-basic

===================================================================================

ADOX - Gerenciando o seu banco de dados
http://www.macoratti.net/adox.htm

===================================================================================

ADO, ADOX  - Manual de Sobrevivência ...

1- ADO - Tratamento e gerenciamento da dados - O objeto ADO permite o acesso , tratamento e gerenciamento de dados em um banco de dados via um provedor OLE DB. 

2- ADOX - Definição de dados e segurança - O objeto ADOX contém propriedades e métodos para criar e modificar a estrutura de banco de dados, tabelas e consultas , permitindo também criar e modificar as contas de grupos e usuários implementando a segurança através de permissões aos objetos. A ADOX pode ser usada para definição de dados tanto no Access como no SQL Server.

3- JRO - Replicação e serviços do Jet Engine - O objeto JRO contém propriedades e métodos que permitem criar , modificar e sincronizar replicas. O JRO somente pode ser usado com base de dados Access e foi desenhado para ser utilizado especificamente com o provedor - Microsoft Jet 4.0 OLE DB Provider. 

http://www.macoratti.net/adoman.htm

===================================================================================

Visual Basic & ADO Tutorial
http://www.vb6.us/tutorials/database-access-ado-vb6-tutorial

===================================================================================

CRIAR .MDB VIA CODIGO COM O ADOX
http://www.vbmania.com.br/index.php?modulo=detalhe&id=6634

===================================================================================

CRIAR CONSULTAS ACCESS PELO VB COM ADOX.
http://www.vbmania.com.br/index.php?modulo=detalhe&id=6365

===================================================================================

[][ô]s,
Tunusat.
SNNIFFER 04/05/2017 12:32:53
#473730
Bom, com o MySQL faço assim:

    [Ô]INSERT INTO tblINFGERAL VALUES (conteudo_coluna_1, conteudo_coluna_2......)


Assim, não precisa informar a coluna, os campos serão acrescentados na ordem. Para facilitar a criação do insert, usa o excel, ele ajuda pra caramba na criação de sql
DS2T 04/05/2017 12:39:30
#473732
Eu tenho um framework mapeamento objeto-relacional em .NET que faz isso pra mim.. assim como existe também o Entity Framework e outros.
Infelizmente, no seu caso, é o VB6... e ele não tem o Reflection pra te socorrer.

Mas nada te impede de criar uma classe com um objeto Collection e uma propriedade NomeTabela(string). Esse objeto Collection, armazenaria um objeto com três propriedades: NomeCampo, TipoCampo e Valor.
Depois te preencher esse collection, basta montar sua expressão em cima dele, num loopzinho.

Vantagens? Nunca mais ter que ficar apanhando de Insert Into e verificando onde tá faltando aspas simples... Pode fazer a mesma coisa pro Update também.

Abraços!
JOYYY 04/05/2017 18:04:43
#473741
SNNIFFER

Citação:

:
Bom, com o MySQL faço assim:

    [Ô]INSERT INTO tblINFGERAL VALUES (conteudo_coluna_1, conteudo_coluna_2......)


Assim, não precisa informar a coluna, os campos serão acrescentados na ordem. Para facilitar a criação do insert, usa o excel, ele ajuda pra caramba na criação de sql




Eu até uso essa forma, porém imagina o tamanho que iria ficar isso com mais de 100 colunas...E ainda ter que adicionar nas linhas de baixo textbox por textbox.... tipo:

  & [Ô]([ô][Ô] & Me.txtNome & [Ô][ô], [Ô] _ 
& [Ô][ô][Ô] & Me.txtNome2 & [Ô][ô], [Ô] _
..................



DS2T

Eu ouvi dizer que precisaria criar uma função. O problema é que nem sei como e por onde começar. Caso saiba como fazer no VB poderia me explicar ?


Obrigada a todos que me responderam
JABA 04/05/2017 19:38:22
#473744
Muito provavelmente essa tabela está desnormalizada. Você tem certeza absoluta de que não dá para dividir essa tabela em outras?
MARIOANDRADE 04/05/2017 22:00:36
#473746
Citação:

:
Muito provavelmente essa tabela está desnormalizada. Você tem certeza absoluta de que não dá para dividir essa tabela em outras?


Eu ia perguntar a mesma coisa...
JOYYY 05/05/2017 18:39:46
#473767
Acho que não pessoal.

é uma empresa de próteses dentárias (faz peças para dentes). Então seriam 32 DENTES, sendo que cada DENTE pode ter 8 tipos de patologias. Então 32 x 8, totalizando no mínimo 256 COLUNAS, fora um código para identificar quem é o paciente.

Sinceramente eu não vejo como dividir isso, mas aceito sugestões.

Todavia continuo achando que criar uma função para inserir isso de forma mais prática seria o mais viável.





JABA 05/05/2017 19:12:49
#473768
E que tipo de campo possui esses 32 dentes e suas patologias? São booleanos, textos ou o que? Se puder, mostre-nos uma imagem. Pelo que to vendo, já dá pra separar em duas tabelas: uma dentária e a outra de patologia.
OMAR2011 05/05/2017 22:15:07
#473769
Então, coloque esta tabela a disposição do pessoal para verificar e ver o que pode ser feito.
JOYYY 09/05/2017 16:53:58
#473852
Desculpem não ter retornado antes.

Decidi seguir a sugestão do JABA, e estou remodelando as tabelas e refazendo as sintaxes. Realmente parece que vai ficar melhor mesmo.

Mas quero ir até a parte final para dar um retorno mais objetivo sobre esse tema.

Deixarei o tópico aberto mais alguns dias para poder dar um retorno a todos que de alguma forma me ajudaram. Assim que concluir, ou caso tenha algum percalço aviso por aqui.

Obrigada pessoal
Tópico encerrado , respostas não são mais permitidas