GERAR CODIGO SEQUENCIAL

ERLANMG 21/02/2013 17:48:32
#419498
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.



FELLIPEASSIS 21/02/2013 18:11:18
#419501
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
ERLANMG 22/02/2013 07:41:25
#419506
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

PERCIFILHO 22/02/2013 08:25:08
#419510
Resposta escolhida
Por acaso, seria uma função para retornar o próximo número sequencial dos registros de uma tabela?

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.
OCELOT 22/02/2013 10:10:03
#419520
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
ERLANMG 22/02/2013 11:12:23
#419522
OCELOT,

Poderia por gentileza postar um exemplo de GetTipoDeDados com o índice.

Desde já agradeço pela atenção.
OCELOT 22/02/2013 13:13:32
#419527
é 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
Tópico encerrado , respostas não são mais permitidas