Jump to content

dar nome a nova tabela vb2005 express


brunu125
 Share

Recommended Posts

boas pessoal

sou um novato aqui no forum por isso peço desculpa se estiver a perguntar isto no local errado

é o seguinte:

estou a criar um programinha simples e num dos botoes tem o codigo de criar uma nova tabela na bd. o nome desta nova tabela é dado pelo utilizador e fica guardado numa variavel para poder variar conforme a escolha do utilizador

a minha duvida é como fazer para dar o name á tabela apartir de uma variavel

acho que me expliquei bem

agradeço desde ja uma ajuda

bpinto

Link to comment
Share on other sites

A menos q estejas a fazer uma ferramenta para gerir e criar modelos de dados, não deves dar deixar o utilizador interferir com o modelo de dados criando tabelas.

O utilizador pode ser responsável pelo conteudo das tabelas, mas n pela sua implementação.

Caso o objectivo seja mm a ferramenta de gestão dos modelos de dados, então deves criar scripts em sql através dos dados do utilizador q posteriormente serão executados, não esquecendo as validações necessárias.

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other sites

desculpa os k's,

a intensão é a seguinte:

o programa gere fornecedores, ou seja sao inseridos os dados dos fornecedores numa tabela (dados_forn) e ao fazer isto quero que o programa crie uma tabela com o numero do fornecedor (gerado sequencialmente pelo programa),

na pratica o utilizador nao interfere, o numero do fornecedor seria guardado numa variavel para que posa ser atribuido como nome da tabela

o código é este:

        Dim nome As String
        nome = CStr(numero)
        Const constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Ecorritel\Gestor\gestor\gestor\g_f.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True"
        Dim db As New SqlConnection(constr)
        db.Open()
        Dim varsql As String
        varsql = "CREATE TABLE teste (ola varchar(10))"
        Dim cmd As New SqlCommand(varsql, db)
        cmd.ExecuteScalar()
        db.Close()

o que queria fazer era em vez de teste (que seria o nome da tabela) colocar la a variavel para que o nome possa modar consuante o numero do fornecedor

é possivel dar uma ajuda? xD

cumps

bpinto

Link to comment
Share on other sites

o programa gere fornecedores, ou seja sao inseridos os dados dos fornecedores numa tabela (dados_forn) e ao fazer isto quero que o programa crie uma tabela com o numero do fornecedor (gerado sequencialmente pelo programa),

na pratica o utilizador nao interfere, o numero do fornecedor seria guardado numa variavel para que posa ser atribuido como nome da tabela

Já agora não estarás a complicar um pouco as coisas criar uma tabela para cada fornecedor?

Se tiveres 5000 fornecedores vais criar 5000 tabelas com os mesmos tipos de dados em vez de 1 tabela com 5000 registos?

Não será melhor criares uma tabela de fornecedores com os dados de cada fornecedor?

Link to comment
Share on other sites

Não é a melhor forma de resolver uma situação dessas, e já te foram dadas sugestões para melhorar.

O jpaulino deu-te inclusive a resolução para a dúvida primária.

No entanto, fica para referência, que podes alterar nomes de tabelas via SQL:

ALTER TABLE Utilizadores RENAME TO Pessoal_que_utiliza

EDIT: Não sei porque fiquei com a sensação de que a dúvida consistia em alterar o nome da tabela

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

boas pessoal

obrigado pela ajuda, ja resolvi um erro, mas agora aparece o seguinte erro neste codigo:

       Me.Textnumero.Text = numero
            MsgBox(Me.Textnumero.Text)
            Const constri As String = "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Ecorritel\Gestor\gestor\gestor\g_f.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True"
            Dim dbi As New SqlConnection(constri)
            dbi.Open()
            Dim varsqli As String
            varsqli = "CREATE TABLE " & Me.Textnumero.Text & " (ola varchar(10))"
            Dim cmdi As New SqlCommand(varsqli, dbi)
            cmdi.ExecuteScalar()
            dbi.Close()

na expressao

cmdi.ExecuteScalar()

aparece o seguinte erro : Incorrect syntax near '12'.

a textnumero tem o texto "12" q é o numero do fornecedor.

a intensão é q seja tambem o nome desta tabela

podem dar uma nova ajuda sff?

cumps

bpinto

Link to comment
Share on other sites

Eu também sou da opinião q estás a complicar demasiado a solução, uma tabela para cada fornecedor é um exagero.

eu sei q é um pouco exagerado, mas escolhi assim porque cada fornecedor pode trazer muitos tipos de material, e assim tenho um control de cada fornecedor, tudo aquilo aque ja trouxe, e o dinheiro q ja levou...

Link to comment
Share on other sites

Não tendo a certeza, arriscaria a dizer que as regras de nomenclatura, por exemplo das variáveis, estão aplicadas também às tabelas de SQL.

Uma delas diz que um nome não pode começar por um número.

Faz por exemplo:

varsqli = "CREATE TABLE T" & Me.Textnumero.Text & " (ola varchar(10))"

Retirar o número para processamento de uma string tipo "T12" é simples.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Não estou muito perspicaz a esta hora, mas se queres guardar fornecedores e respectivos dados, não bastaria uma tabela que tenha como colunas todos os dados que pretendes?

Onde cada linha representaria um fornecedor distinto.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Não tendo a certeza, arriscaria a dizer que as regras de nomenclatura, por exemplo das variáveis, estão aplicadas também às tabelas de SQL.

Uma delas diz que um nome não pode começar por um número.

Faz por exemplo:

varsqli = "CREATE TABLE T" & Me.Textnumero.Text & " (ola varchar(10))"

Retirar o número para processamento de uma string tipo "T12" é simples.

Muito obrigado pela ajuda, tanto a ti ribeiro55 como a todos os outros, ja consegui fazer o q queria!

B)

cumps

bpinto

Link to comment
Share on other sites

mas existe outra maneira de fazer o que pretendo?

cumps bpinto

Sim.

De uma maneira muito geral:

1 - Uma tabela com a listagem dos fornecedores:

-idFornecedor  PK

-nome

-etc...

2 - Uma tabela com a listagem dos materiais

-idMaterial  PK

-etc...

3 - Tabela Geral onde vais guardar os dados associados aos materiais q cada um forneceu

- IdFornecimento  PK

- FK_idFornecedor

- FK_idMaterial

- Datas

- etc...

Não sei se o objectivo é mm este, mas serve como exemplo de como podes estruturar o teu modelo de dados.

Depois é só fazer uns joins.

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.