GERAR CODIGO SEQUENCIAL
Caros colegas, boa tarde!
Tenho um sistema em VB 6 e mysql, estou migrando para vbnet, mas estou apanhando, por este motivo preciso da ajuda de voces.
Para gerar codigo em VB uso como segue:
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockReadOnly
rs.Open [Ô]Select * From funcao order by codigo[Ô], conn
If rs.EOF = True Then
text1.Text = geracodigo([Ô]1[Ô], 3)
Else
rs.MoveLast
text1.Text = geracodigo(rs!Codigo + 1, 3)
End If
Como ficaria a rotina acima em VB.net.
Para exibir em vb net estou usando como segue:
conn = New MySqlConnection
conn.ConnectionString = Con_S
SQL = [Ô]select * from clientes where [Ô] & CampoConsulta & [Ô] like [ô][Ô] & txtProcura.Text & [Ô]%[ô] order by razao[Ô]
conn.Open()
cmd = New MySqlCommand(SQL, conn)
dr = cmd.ExecuteReader()
ListView1.Items.Clear()
Qtde_registro.Text = 0
If dr.HasRows = False Then
MsgBox([Ô]Não foram encontrados resultados para a pesquisa. Favor redefinir os parâmetros.[Ô], vbInformation, [Ô]Mensagem do Sistema[Ô])
Exit Sub
End If
ListView1.Items.Clear()
Qtde_registro.Text = 0
While dr.Read()
Dim LVItem As New ListViewItem
LVItem.Text = dr.GetString(70)
[ô] Inclui o item no ListView
ListView1.Items.Add(LVItem)
[ô] Atribui as demais linhas ao subitens
LVItem.SubItems.Add(dr.GetString(2))
LVItem.SubItems.Add(dr.GetString(0))
LVItem.SubItems.Add(dr.GetString(9))
LVItem.SubItems.Add(dr.GetString(11))
ListView1.Focus()
End While
Qtde_registro.Text = ListView1.Items.Count
dr.Close()
conn.Dispose()
End Sub
Existe a possibilidade de em vez de usar (dr.GetString(11)) usar o nome do campo, por exemplo dr([Ô]codigo[Ô])???
Desde já agradeço a ajuda de todos.
Tenho um sistema em VB 6 e mysql, estou migrando para vbnet, mas estou apanhando, por este motivo preciso da ajuda de voces.
Para gerar codigo em VB uso como segue:
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockReadOnly
rs.Open [Ô]Select * From funcao order by codigo[Ô], conn
If rs.EOF = True Then
text1.Text = geracodigo([Ô]1[Ô], 3)
Else
rs.MoveLast
text1.Text = geracodigo(rs!Codigo + 1, 3)
End If
Como ficaria a rotina acima em VB.net.
Para exibir em vb net estou usando como segue:
conn = New MySqlConnection
conn.ConnectionString = Con_S
SQL = [Ô]select * from clientes where [Ô] & CampoConsulta & [Ô] like [ô][Ô] & txtProcura.Text & [Ô]%[ô] order by razao[Ô]
conn.Open()
cmd = New MySqlCommand(SQL, conn)
dr = cmd.ExecuteReader()
ListView1.Items.Clear()
Qtde_registro.Text = 0
If dr.HasRows = False Then
MsgBox([Ô]Não foram encontrados resultados para a pesquisa. Favor redefinir os parâmetros.[Ô], vbInformation, [Ô]Mensagem do Sistema[Ô])
Exit Sub
End If
ListView1.Items.Clear()
Qtde_registro.Text = 0
While dr.Read()
Dim LVItem As New ListViewItem
LVItem.Text = dr.GetString(70)
[ô] Inclui o item no ListView
ListView1.Items.Add(LVItem)
[ô] Atribui as demais linhas ao subitens
LVItem.SubItems.Add(dr.GetString(2))
LVItem.SubItems.Add(dr.GetString(0))
LVItem.SubItems.Add(dr.GetString(9))
LVItem.SubItems.Add(dr.GetString(11))
ListView1.Focus()
End While
Qtde_registro.Text = ListView1.Items.Count
dr.Close()
conn.Dispose()
End Sub
Existe a possibilidade de em vez de usar (dr.GetString(11)) usar o nome do campo, por exemplo dr([Ô]codigo[Ô])???
Desde já agradeço a ajuda de todos.
vc quer carregar um listview tipo uma pesquisa pelo q vi pq esta a usar o like, se for é assim
http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=8139
http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=8139
Bom dia!
Como ficaria a rotina abaixo em VB.net.
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockReadOnly
rs.Open [Ô]Select * From funcao order by codigo[Ô], conn
If rs.EOF = True Then
text1.Text = geracodigo([Ô]1[Ô], 3)
Else
rs.MoveLast
text1.Text = geracodigo(rs!Codigo + 1, 3)
End If
Como ficaria a rotina abaixo em VB.net.
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockReadOnly
rs.Open [Ô]Select * From funcao order by codigo[Ô], conn
If rs.EOF = True Then
text1.Text = geracodigo([Ô]1[Ô], 3)
Else
rs.MoveLast
text1.Text = geracodigo(rs!Codigo + 1, 3)
End If
Por acaso, seria uma função para retornar o próximo número sequencial dos registros de uma tabela?
Se for, eu utilizo assim:
Para utilizar a função, é assim:
Seria isso?
Até mais.
Se for, eu utilizo assim:
[ô] função para retornar o próximo código vazio da tabela
Private Function ProximoCodigo()
Dim cmdclientes As OleDbCommand
Dim maior As Long
cmdclientes = New OleDbCommand([Ô]Select Max(codigo) From Clientes[Ô], conexao)
cmdclientes.Connection = conexao
conexao.Open()
[ô] se não tiver nenhum registro na tabela
If IsDBNull(cmdclientes.ExecuteScalar) Then
maior = 1
Else
[ô] senão, acrescenta +1 no último código
maior = cmdclientes.ExecuteScalar + 1
End If
cmdclientes.ExecuteNonQuery()
[ô] aqui, guarda o número da próxima sequencia
ProximoCodigo = maior
conexao.Close()
End Function
Para utilizar a função, é assim:
TextBox1.Text = ProximoCodigo()
Seria isso?
Até mais.
Nunca use [Ô]SELECT *[Ô], pelo que você postou ali você tem talvez mais de 70 campos nessa tabela e usa só 5 deles ali, você só esta fazendo o banco de dados trabalhar mais a toa.
Deve funcionar também você pegar os dados usando dr([Ô]código[Ô]), porém ele retorna um object, o ideal é usar os GetTipoDeDados com o Ãndice do campo que retorna os dados já no formato correto, o que é outro motivo para se ter os campos definidos na SQL, já que o Ãndice deles é de acordo com o que aparecem na SQL
Deve funcionar também você pegar os dados usando dr([Ô]código[Ô]), porém ele retorna um object, o ideal é usar os GetTipoDeDados com o Ãndice do campo que retorna os dados já no formato correto, o que é outro motivo para se ter os campos definidos na SQL, já que o Ãndice deles é de acordo com o que aparecem na SQL
OCELOT,
Poderia por gentileza postar um exemplo de GetTipoDeDados com o Ãndice.
Desde já agradeço pela atenção.
Poderia por gentileza postar um exemplo de GetTipoDeDados com o Ãndice.
Desde já agradeço pela atenção.
é o que você estava fazendo, eu só ilustrei quando disse GetTipoDeDados, pois existem vários métodos, como o que você usou
LVItem.Text = dr.GetString(70)
E existem para todos os tipos básicos, como GetByte, GetBoolean, GetDouble, etc. Esse é o modo mais recomendado de se fazer, somado a se colocar apenas os campos necessários na SQL
LVItem.Text = dr.GetString(70)
E existem para todos os tipos básicos, como GetByte, GetBoolean, GetDouble, etc. Esse é o modo mais recomendado de se fazer, somado a se colocar apenas os campos necessários na SQL
Tópico encerrado , respostas não são mais permitidas