• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

brunu125

dar nome a nova tabela vb2005 express

18 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

O sitio correcto é em dúvidas e ajudas, mas já movi, mas podes deixar de usar k's, isto não é um telemóvel.

Podes mostrar o código que cria a base de dados ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, mas para isso só necessitas de fazer (por exemplo com base numa textbox):

varsql = "CREATE TABLE " & Me.TextBox1.Text & " (ola varchar(10))"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 também, mas não entendi isso na altura B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu também, mas não entendi isso na altura B)

mas existe outra maneira de fazer o que pretendo?

cumps bpinto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Marca o tópico como resolvido (em baixo, "Topic Solved"), sempre que obtenhas uma resolução.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais uma vez obrigado a todos,

bruno1234 vou adaptar a tua dica á minha aplicação, obrigado!

ribeiro55 obrigado pelas luzes de como devo fazer as coisas aqui no forum xD

cumps a todos

bPinto :ipool:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora