1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Inserir registo em visual basic

Discussão em 'Programação' iniciada por luistojo, 4 de Janeiro de 2009. (Respostas: 3; Visualizações: 2915)

  1. luistojo

    luistojo Suspenso

    Boas,

    eu estou a fazer um projecto em visual basic 2006 e tenho que inserir registos novos, neste caso clientes e tipo ao carregar no botao inserir aparecem as caixas todas mas depois queria fazer um botao para gravar so que nao sei como se faz.

    Ja pesquisei bastante mas nao encontrei nada, alguem me poderia ajudar?

    Obrigado
     
  2. Red_Beret

    Red_Beret Power Member

    gravar onde? ficheiros? base de dados? ....
     
  3. luistojo

    luistojo Suspenso

    ya tipo tenho a base de dados e cria atraves do vb criar registos eu sei fazer so que depois de inserir os dados nao tenho nada a dar confirmação que o registo foi inserido correctamente.

    ate tenho a validação dos campos:
    Código:
    If IsNumeric(Text1.Text) Then
    clienteadodc.CommandType = adCmdText
    clienteadodc.RecordSource = "Select * from Clientes where codcliente =" + Text1.Text
    Else
    MsgBox "Erro, coloque um valor númerico por favor.", , "Erro..."
    End If
    If IsNumeric(MaskEdBox3.Text) Then
    clienteadodc.CommandType = adCmdText
    clienteadodc.RecordSource = "Select * from Clientes where bicliente =" + MaskEdBox3.Text
    Else
    MsgBox "Erro, coloque um valor númerico por favor.", , "Erro..."
    End If
    If IsNumeric(MaskEdBox2.Text) Then
    clienteadodc.CommandType = adCmdText
    clienteadodc.RecordSource = "Select * from Clientes where nifcliente =" + MaskEdBox2.Text
    Else
    MsgBox "Erro, coloque um valor númerico por favor.", , "Erro..."
    End If
    If IsNumeric(MaskEdBox5.Text) Then
    clienteadodc.CommandType = adCmdText
    clienteadodc.RecordSource = "Select * from Clientes where telefonecliente =" + MaskEdBox5.Text
    Else
    MsgBox "Erro, coloque um valor númerico por favor.", , "Erro..."
    End If
    
    If IsDate(MaskEdBox1.Text) Then
    clienteadodc.CommandType = adCmdText
    clienteadodc.RecordSource = "Select * from cliente where datanascimento=#" + MaskEdBox1.Text + "#"
    Else
    MsgBox "Erro, coloque uma data correcta por favor.", , "Erro..."
    End If
    
    clienteadodc.CommandType = adCmdText
    clienteadodc.RecordSource = "Select * from Cliente where cpcliente like '" + MaskEdBox4.Text + "%'"
    clienteadodc.CommandType = adCmdText
    clienteadodc.RecordSource = "Select * from Cliente where localidadecliente like '" + text2.Text + "%'"
    
    clienteadodc.CommandType = adCmdText
    clienteadodc.RecordSource = "Select * from cliente where moradacliente like '" + text6.Text + "%'"
    clienteadodc.CommandType = adCmdText
    clienteadodc.RecordSource = "Select * from cliente where mailcliente like '" + text3.Text + "%'"
    clienteadodc.CommandType = adCmdText
    clienteadodc.RecordSource = "Select * from cliente where nomecliente like '" + text1.Text + "%'"
     
     
    Última edição pelo moderador: 5 de Janeiro de 2009
  4. alfinete

    alfinete Power Member

    a bd é em access ou sqlserver?

    se for access

    Código:
    
     private  string caminhobd = @"E:\teste2\teste_chamaprogs\teste_chamaprogs\bd\basedados.mdb";
    
      // grava os dados na bd
            private void gravadados()
            {
           
    
                string ligacao_bd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + caminhobd + ";Persist Security Info=False;";
                OleDbConnection ligacao = new OleDbConnection(ligacao_bd);
    
                OleDbCommand comando = new OleDbCommand("insert into tab values(@id,@nome,@caminho)", ligacao);
                comando.Parameters.Add(new OleDbParameter("@id", da_id_bd() + 1));
                comando.Parameters.Add(new OleDbParameter("@nome", txtnome.Text));
                comando.Parameters.Add(new OleDbParameter("@caminho", txtcaminho.Text));
                ligacao.Open();
                if (comando.ExecuteNonQuery() == 1)
                {
                    this.lblerro.Text = "gravado com sucesso";
                 
                }
                else
                {
                    this.lblerro.Text = "Erro na interligação de dados. Por favor tente mais tarde";
                 
                }
                ligacao.Close();
                comando.Dispose();
    
            }
    
    _________________________________________________________________
    se for sqlserver 2005
    ______________________________________________________________
    Código:
    private void gravadados2()
            {
            string ligacao_bd = "Initial Catalog=nomebd;Data Source=localhost;Integrated Security=SSPI;";
            
           
              SqlConnection ligacao  = new SqlConnection(ligacao_bd );
             
            //Comando sql que insere cada campo preenchido na respectiva BD      
            SqlCommand comando = new SqlCommand("insert into tabteste values(@nome,@img)", ligacao);
            //Adiciona valores em cada na respectivo campo da bd
            comando.Parameters.Add(new SqlParameter("@nome", tbtxt.Text));
            comando.Parameters.Add(new SqlParameter("@img", ""));
            ligacao.Open();
            if (comando.ExecuteNonQuery() == 1)
                lblerro.Text = "gravado com sucesso";
            else
                lblerro.Text = "Erro na interligação de dados. Por favor tente mais tarde";
            ligacao.Close();
            comando.Dispose();
          
           
                
           
    
            }
    
    Código:
          comando.Parameters.Add(new SqlParameter("@nome", tbtxt.Text));
            comando.Parameters.Add(new SqlParameter("@img", ""));
    
    antes de fazeres a insersão faz tdas as validações dos campos
    depois cria um parameter para cada campo que queres inserir

    campo txtnome criei um @nome , txtimg , @img , etc

    não precisas de criar um para id , desde que ponhas na tabela o id como automatico no sqlserver

    no acess eu so consegui criando um parametro id e por la um que não existia ..
    que utilizei um metodo criado por mim
    da_id_bd()
    que fiz da_id_bd() + 1, pois este metodo devolve um inteiro resultante de um count* da tabela em causa e somo 1 ..


    metodo da_id_bd
    _____________________________________

    Código:
    
       // danos o numero de registos existentes na tabela
            private int da_id_bd()
            {
                int id_bd = 0;
                DataSet ds_teste = new DataSet();
    
                //string ligacao_bd = "Initial Catalog=testeforms;Data Source=localhost;Integrated Security=SSPI;";
                string ligacao_bd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +caminhobd + ";Persist Security Info=False;";
                OleDbConnection ligacao = new OleDbConnection(ligacao_bd);
                ligacao.Open();
    
    
                OleDbCommand cmd = ligacao.CreateCommand();
    
                // faz o select do campo ing da tab teste regerente ao id do value seleccionado na combo
                // Int32.Parse(valor) converte valor para inteiro
                cmd.CommandText = "select count(*) from tab ";
    
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);
    
                da.Fill(ds_teste);
    
                // guarda a imagem regerente ao id seleccionado
                id_bd = Convert.ToInt32(ds_teste.Tables[0].Rows[0][0].ToString());
                //cria o caminho onde se encotra a imagem ja com a imagem
                return id_bd;
    
    
            }
    
    
    no caso de acess

    usas estes namespaces

    Código:
    using System.Data;
    using System.Data.OleDb;
    
    no caso de sqlserver

    Código:
    using System.Data;
    using System.Data.SqlClient;
    
     
    Última edição: 4 de Janeiro de 2009

Partilhar esta Página