Usuário com melhor resposta
Gerar Código Automático

Pergunta
-
Eai Galera Beleza. Estou começando a programar agora e estou com varias dificuldades caso alguém possa me ajudar ficarei muito grato,
Estou com problema para buscar o Código da Coluna do banco de dados Access
gostaria tambem que na frente do codigo ele acrecentace dois zeros ex. (001) (010) teria como eu fazer isso?
o codigo que consegui achar fazer não puxa para a textbox o valor.
Dim dr As OleDbDataReader = Nothing
Dim AUTOMATICO As Integer = 0
Using con As OleDbConnection = PConnection()
Try
con.Open()
Dim Ds As New DataSet
Dim sql As String = "SELECT Max(Codigo) from inventariante = txtCodigo.Text "
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
dr = cmd.ExecuteReader()
If dr.HasRows Then
dr.Read()
If txtCodigo.Text > 0 Then
AUTOMATICO = txtCodigo.Text
End If
AUTOMATICO = AUTOMATICO + 1
End Ifnão sei se esta certo,
galera Obrigado.
Douglas Antunes
Respostas
-
Mano, se você quer um campo de código automático, define no banco de dados um campo como automático que o campo é incrementado de acordo com a entrada de registros.
'você pode pegar a string de conexão em http://www.connectionstrings.com/access/Using con As new OleDbConnection ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=CAMINHODOBANCODEDADOS;Persist Security Info=False;")
con.Open()
Dim cmd As new OleDbCommand ("SELECT Max(Codigo) from inventariante", con)'Com esse sql você pegará somente um registro no caso o maior valor do campo código da tabela inventariamente
Dim dr As OleDbDataReader = cmd.ExecuteReader()
If dr.HasRows Then
dr.Read()if dr.item(0)>0 then
textBox.text=dr.item(0).tostring
end if
end if
con.close
- Sugerido como Resposta Matheus L. M. C. Campos quinta-feira, 2 de abril de 2015 03:25
- Marcado como Resposta Eduardo.RomeroModerator quinta-feira, 2 de abril de 2015 14:28
-
Tente colocar o apelido para o campo MAX, veja abaixo fiz alguns ajustes:
Dim dr As OleDb.OleDbDataReader = Nothing Dim dt As DataTable = Nothing Dim AUTOMATICO As Integer = 0 Dim con As OleDb.OleDbConnection con.ConnectionString = "SUA STRING DE CONEXAO"; Try con.Open() Dim Ds As New DataSet 'se o id for inteiro coverta de string para int ex.: Convert.ToInt32(txtCodigo.Text) Dim sql As String = "SELECT MAX(codigo) as Total from inventariante = '" + txtCodigo.Text + "'" Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(sql, con) dr = cmd.ExecuteReader() 'Carrega os dados para o DataTable dt.Load(dr) 'Se for maior é por que retornou dados If dt.Rows.Count > 0 Then If Convert.ToInt32(txtCodigo.Text.Trim) > Convert.ToInt32(dt.Rows(0).ToString) Then AUTOMATICO = Convert.ToInt32(txtCodigo.Text.Trim) End If AUTOMATICO = AUTOMATICO + 1 End If Catch ex As Exception MessageBox.Show("Erro " & ex.Message) End Try End Sub
OBS: Finaliza a outra Thread que abriu com a mesma pergunta aqui : https://social.msdn.microsoft.com/Forums/pt-BR/6a66d581-cd45-402a-9f54-a92b946b63b9/vbnet-ler-banco-de-dados-access?forum=vsvbasicpt
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Editado Mr. GMSOFT quarta-feira, 1 de abril de 2015 11:54
- Sugerido como Resposta Eduardo.RomeroModerator quarta-feira, 1 de abril de 2015 12:52
- Marcado como Resposta Eduardo.RomeroModerator quinta-feira, 2 de abril de 2015 14:28
-
Douglas, boa tarde!
Conforme conversado a solução correta esta abaixo!
Try Dim Table_ As String = "tblContacts" Dim query As String = "SELECT top 1 * FROM " & Table_ & " ORDER BY ID DESC" Dim MDBConnString_ As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Controle de Invnetario Coocerqui\PRODUTOS.accdb;Persist Security Info=True" Dim ds As New DataSet Dim cnn As OleDbConnection = New OleDbConnection(MDBConnString_) cnn.Open() Dim cmd As New OleDbCommand(query, cnn) Dim da As New OleDbDataAdapter(cmd) da.Fill(ds, Table_) cnn.Close() Dim t1 As DataTable = ds.Tables(Table_) Dim row As DataRow For Each row In t1.Rows txtCodigo.Text = row(0) Next Catch ex As Exception ' Show the exception's message. MessageBox.Show(ex.Message) ' Show the stack trace, which is a list of methods ' that are currently executing. MessageBox.Show("Stack Trace: " & vbCrLf & ex.StackTrace) End Try
Se a resposta for útil, favor votar como útil para que ajude outros usuários com a mesma dúvida.
Att,
André Côrte
Analista de Sistema
Skype: corte.solutions
Nosso trabalho
Grupo de Estudo no Facebook
Canal de Estudo no Youtube- Marcado como Resposta DouglasAntunes quinta-feira, 2 de abril de 2015 19:03
Todas as Respostas
-
Douglas, boa noite!
A Solução para adicionar os zeros antes do número segue abaixo!
var valor = "100"; var numeroCom5Casas = valor.PadLeft(5, '0'); var resultado = numeroCom5Casas; // 00100
var numeroCom6Casas = valor.PadLeft(6, '0'); var resultado6 = numeroCom6Casas; // 000100
var numeroCom7Casas = valor.PadLeft(6, '0');
var resultado7 = numeroCom7Casas; // 0000100
Segue alguns exemplos:
http://www.fernandasallai.com.br/?p=514
http://www.dotnetperls.com/padleft-vbnet
Para a conexão com o banco caso não saiba como fazer veja o link abaixo!
https://www.youtube.com/watch?v=4bMbhdRFtHo
Dim dr As OleDbDataReader = Nothing Dim AUTOMATICO As Integer = 0 Using con As OleDbConnection = PConnection() Try con.Open() Dim Ds As New DataSet 'se o id for inteiro coverta de string para int ex.: Convert.ToInt32(txtCodigo.Text) Dim sql As String = "SELECT * from inventariante = '" + txtCodigo.Text + "'" Dim cmd As OleDbCommand = New OleDbCommand(sql, con) dr = cmd.ExecuteReader() If dr.HasRows Then dr.Read() If txtCodigo.Text > 0 Then AUTOMATICO = txtCodigo.Text End If AUTOMATICO = AUTOMATICO + 1 End If
Att,
<br/>
<b>André Rodrigues Côrte</b>
<br/> Analista de Sistema <br/>
<b><a href="http://cortesolutions.com.br/" target="_target">Côrte Solutions</a></b>
<br/> <b><a href="https://www.facebook.com/groups/cursocortesolutions" target="_target">Grupo de Estudo C# Facebook</a></b>
<br/> <b><a href="https://www.youtube.com/channel/UClnaKcmvv0tDiYgUdwXZvCg" target="_target">Canal de Estudo Youtube</a></b>
- Editado André Rodrigues Côrte terça-feira, 31 de março de 2015 01:54
-
Fala André Beleza?, Boa noite.
Muito obrigado pela sua ajuda!!
Então eu não estou conseguindo com que apareça o código do banco de dados no textBox,
copiei o código que você me mandou mais não aparece,
você teria mais alguma dica para me dar?
Obrigado!
Douglas Antunes
-
Douglas,
Chama via skype que te ajudo!
Att,
André Rodrigues Côrte
Analista de Sistema
Côrte Solutions
Grupo de Estudo C# Facebook
Canal de Estudo Youtube -
-
Douglas, meu skype esta na assinatura!
Abraço!
Se a resposta for útil, favor votar como útil para que ajude outros usuários com a mesma dúvida.
Att,
André Côrte
Analista de Sistema
Skype: corte.solutions
Nosso trabalho
Grupo de Estudo no Facebook
Canal de Estudo no Youtube -
Tente colocar o apelido para o campo MAX, veja abaixo fiz alguns ajustes:
Dim dr As OleDb.OleDbDataReader = Nothing Dim dt As DataTable = Nothing Dim AUTOMATICO As Integer = 0 Dim con As OleDb.OleDbConnection con.ConnectionString = "SUA STRING DE CONEXAO"; Try con.Open() Dim Ds As New DataSet 'se o id for inteiro coverta de string para int ex.: Convert.ToInt32(txtCodigo.Text) Dim sql As String = "SELECT MAX(codigo) as Total from inventariante = '" + txtCodigo.Text + "'" Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(sql, con) dr = cmd.ExecuteReader() 'Carrega os dados para o DataTable dt.Load(dr) 'Se for maior é por que retornou dados If dt.Rows.Count > 0 Then If Convert.ToInt32(txtCodigo.Text.Trim) > Convert.ToInt32(dt.Rows(0).ToString) Then AUTOMATICO = Convert.ToInt32(txtCodigo.Text.Trim) End If AUTOMATICO = AUTOMATICO + 1 End If Catch ex As Exception MessageBox.Show("Erro " & ex.Message) End Try End Sub
OBS: Finaliza a outra Thread que abriu com a mesma pergunta aqui : https://social.msdn.microsoft.com/Forums/pt-BR/6a66d581-cd45-402a-9f54-a92b946b63b9/vbnet-ler-banco-de-dados-access?forum=vsvbasicpt
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Editado Mr. GMSOFT quarta-feira, 1 de abril de 2015 11:54
- Sugerido como Resposta Eduardo.RomeroModerator quarta-feira, 1 de abril de 2015 12:52
- Marcado como Resposta Eduardo.RomeroModerator quinta-feira, 2 de abril de 2015 14:28
-
Boa tarde Pessoal.
Coloquei o código que você me deu, porem da a mensagem de erro
Erro de Sintaxe na Cláusula From,
como que eu coloco um apelido para o campo MAX ?
Desculpa a ignorância, To aprendendo agora rsrs
Muito obrigado pessoal!!
Douglas Antunes
-
Mais ai você esqueceu de colocar a tabela e no lugar só esta o campo
SELECT MAX(codigo) as Total from SUA_TABELA WHERE inventariante='" + txtCodigo.Text + "'"
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
ficou assim dai
Dim sqa As String = "SELECT MAX(codigo) AS TOTAL FROM PRODUTOS WHERE inventariante = '" + txtCodigo.Text + "'"
só que aparece a mensagem abaixo, sera que esqueci de mais alguma coisa?
"Nenhum valor foi fornecido para um ou mais parâmetros necessarios"
Obrigado!!
Douglas Antunes
-
O script correto é esse aqui:
SELECT MAX (codigo) as Total from inventariante WHERE codigo='" + txtCodigo.Text + "'"
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Editado Mr. GMSOFT quarta-feira, 1 de abril de 2015 17:00
-
-
Mano, se você quer um campo de código automático, define no banco de dados um campo como automático que o campo é incrementado de acordo com a entrada de registros.
'você pode pegar a string de conexão em http://www.connectionstrings.com/access/Using con As new OleDbConnection ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=CAMINHODOBANCODEDADOS;Persist Security Info=False;")
con.Open()
Dim cmd As new OleDbCommand ("SELECT Max(Codigo) from inventariante", con)'Com esse sql você pegará somente um registro no caso o maior valor do campo código da tabela inventariamente
Dim dr As OleDbDataReader = cmd.ExecuteReader()
If dr.HasRows Then
dr.Read()if dr.item(0)>0 then
textBox.text=dr.item(0).tostring
end if
end if
con.close
- Sugerido como Resposta Matheus L. M. C. Campos quinta-feira, 2 de abril de 2015 03:25
- Marcado como Resposta Eduardo.RomeroModerator quinta-feira, 2 de abril de 2015 14:28
-
Pessoal eu preciso de suas opiniões,
olha o que eu estava querendo fazer acho que não vai dar certo,
esse abaixo seria o jeito que eu estava querendo fazer,
Porem Estou querendo fazer igual abaixo sem código, Mas tenho duvidas a onde salvar estas informações, pois na exportação preciso delas, o que vocês me aconselham fazer?
Galera Muito obrigado pela força,
Douglas Antunes
-
Boa noite Douglas,
A informação postada por todos lhe dão uma ideia de como deve proceder, copiar e colar não vai resolver seu problema você tem que adaptar a sua necessidade.
Com o desenho da sua estrutura creio que seja mais direta a ajuda.
Abraços
Matheus Leopardi Mello Canelada Campos
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
TechNet Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Douglas, boa tarde!
Conforme conversado a solução correta esta abaixo!
Try Dim Table_ As String = "tblContacts" Dim query As String = "SELECT top 1 * FROM " & Table_ & " ORDER BY ID DESC" Dim MDBConnString_ As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Controle de Invnetario Coocerqui\PRODUTOS.accdb;Persist Security Info=True" Dim ds As New DataSet Dim cnn As OleDbConnection = New OleDbConnection(MDBConnString_) cnn.Open() Dim cmd As New OleDbCommand(query, cnn) Dim da As New OleDbDataAdapter(cmd) da.Fill(ds, Table_) cnn.Close() Dim t1 As DataTable = ds.Tables(Table_) Dim row As DataRow For Each row In t1.Rows txtCodigo.Text = row(0) Next Catch ex As Exception ' Show the exception's message. MessageBox.Show(ex.Message) ' Show the stack trace, which is a list of methods ' that are currently executing. MessageBox.Show("Stack Trace: " & vbCrLf & ex.StackTrace) End Try
Se a resposta for útil, favor votar como útil para que ajude outros usuários com a mesma dúvida.
Att,
André Côrte
Analista de Sistema
Skype: corte.solutions
Nosso trabalho
Grupo de Estudo no Facebook
Canal de Estudo no Youtube- Marcado como Resposta DouglasAntunes quinta-feira, 2 de abril de 2015 19:03
-