MOSTRAR_PROXIMO_REGISTRO_CAMPO

FERRAZ 04/09/2015 18:44:25
#451028
Boa noite a todos.

Favor alguem pode me informar como eu mostro em um campo o proximo registro a ser gravado do banco mysql.

No visual basic 6 eu usava assim;
Dim SQL As String
SQL = [Ô]SELECT * FROM TbForn Order By Registro DESC[Ô]
Set rs = Cnn.Execute(SQL)
TxtReg.Text = Format$(rs.Fields([Ô]Registro[Ô]) + 1, [Ô]000000[Ô])


funcionava perfeitamente agora como faço no vs.net 2005.

Grato a todos.
NICKOSOFT 04/09/2015 19:33:04
#451032
vc pode e deve enxugar esse código todo
  
Dim Sql As String = [Ô]select * from progresso where serieid like @serieid and ano like @ano limit 1[Ô] [ô]sua query, essa é para mysql assim como a connectionstring
Dim ds As DataSet
Dim ds As DataSet = Nothing
Conexao.ConnectionString = [Ô]Server=[Ô] & SERVER & [Ô];User id=[Ô] & USER & [Ô];Password=[Ô] & SENHA & [Ô];database=[Ô] & DATABASE
Using connection As MySqlConnection = Conexao.Open()
Using da As MySqlDataAdapter = New MySqlDataAdapter(sql, connection)
ds = New DataSet()
da.Fill(ds)
txt.text = ds.Tables(0).Rows(0).Item([Ô]alunoid[Ô]).ToString [ô]campo do registro
End Using
End Using


GLEDSON26 04/09/2015 20:45:42
#451034
NICKOSOFT tem toda Razão. :)
FERRAZ 04/09/2015 21:09:04
#451037
Nickosoft, tudo bem.

Viu minha conexao não eh com um dataset e com um modulo veja;

  Imports Microsoft.VisualBasic
Imports MySql.Data.MySqlClient
Imports System
Imports MySql.Data
Imports MySql.Data.MySqlClient.MySqlDataReader
Imports MySql.Data.MySqlClient.MySqlConnection
Imports MySql.Data.MySqlClient.MySqlCommand
Public Class Conn
Public Conexao As String
Public strCon As String
Dim host As String
Dim user As String
Dim pass As String
Dim banco As String
Dim sql As String
Public Sub New()
[ô]\\aqui se conecta com o banco.\\
host = [Ô]localhost[Ô]
user = [Ô]root[Ô]
pass = [Ô]1[Ô]
banco = [Ô]Transpetro[Ô]
strCon = [Ô]server=[Ô] & host & [Ô]; user id=[Ô] & user & [Ô]; password=[Ô] & pass & [Ô]; database=[Ô] & banco & [Ô];Convert Zero Datetime=True;Allow User Variables=True[Ô]
[ô]strCon = ([Ô]Server=[Ô] & host & [Ô]; user id=[Ô] & user & [Ô]; password=[Ô] & pass & [Ô]; database=[Ô] & banco)
End Sub
Public Function Conectar() As Boolean
[ô]\\aqui eu crio a funcao que vai administrar conectividade com o banco de dados.\\
Dim Conexao As New MySqlConnection(strCon)
Try
Conexao.Open()
Catch ex As Exception

MsgBox(ex.Message)
End Try

Return Conexao.State

End Function
Public Sub ExecutaQuery(ByVal sql As String)
Dim Conexao As New MySqlConnection(strCon)
Dim objcmd As New MySql.Data.MySqlClient.MySqlCommand(sql, Conexao)

Try

Conexao.Open()
objcmd.ExecuteNonQuery()

Catch ex As Exception
MessageBox.Show([Ô]Ocorreu um erro: [Ô] & ex.ToString)
Finally
Conexao.Close()
End Try

End Sub

End Class


Então eu estou tentando montar assim:

todo registro começa com (0 + 1) sempre que eu gravar no bd inicia 1 depois gravo outro registro fica 2 e assim sucessivamente, a ideia eh no FrmFerrtas_Load coloco;

 Private Sub FrmFerrtas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TxtDta.Text = Date.Today
TxtReg.Text = [txt-color=#e80000]o proximo registro a ser gravado[/txt-color]
End Sub


Como posso fazer parece simples mais estou tomando um show .net

Grato.
DS2T 04/09/2015 21:12:25
#451038
SQL = [Ô]SELECT (MAX(Registro)+1) As ProximoRegistro FROM TbForn[Ô]

Pode usar assim também.

Além de fazer como o Nickosoft mostrou, você ainda pode usar o objeto MySqlCommand, usando o método ExecuteScalar.

dim resultado as integer = Convert.ToInt32(seuCommand.ExecuteScalar(sql, suaConecao))

Abraços!
FERRAZ 04/09/2015 21:49:35
#451042
Caros colegas,

estou fazendo os testes aqui com as dicas de todos mais até o momento só ocorre erro, estou pesquisando também além de solicitar a ajuda de todos, ainda sem sucesso !

Grato.
DS2T 05/09/2015 04:55:38
#451049
Mostre o código e o erro, assim fica mais fácil saber o que está errado.
Abraços!
ACCIOLLY 07/09/2015 09:39:03
#451104
Resposta escolhida
Citação:

:
Boa noite a todos.

Favor alguem pode me informar como eu mostro em um campo o proximo registro a ser gravado do banco mysql.

No visual basic 6 eu usava assim;

Dim SQL As String
SQL = [Ô]SELECT * FROM TbForn Order By Registro DESC[Ô]
Set rs = Cnn.Execute(SQL)
TxtReg.Text = Format$(rs.Fields([Ô]Registro[Ô]) + 1, [Ô]000000[Ô])


funcionava perfeitamente agora como faço no vs.net 2005.

Grato a todos.



não entendo o motivo para vc querer saber a chave primária antes de gravar, ela não é auto incrementada? em todo caso acho que poderia ficar assim:

Dim SQL As String
SQL = [Ô]SELECT * FROM TbForn Order By Registro DESC LIMIT 1[Ô]
Set rs = Cnn.Execute(SQL)
Dim ProxRegistro As Integer = Convert.toInt16(rs.Fields([Ô]Registro[Ô])) + 1
TxtReg.Text = Format$(ProxRegistro.toString(), [Ô]000000[Ô])


Não sei se vai dar certo do jeito que fiz, até pq não to com o vb aberto! Mas o que posso te dizer é que vc deve converter para inteiro antes de fazer operações aritiméticas, depois quando for setar para o textbox converta para string novamente. Essa mordomia que vc tinha no vb6 acabou!rsrsrsrsrsrs
FERRAZ 07/09/2015 10:30:11
#451105
Acciolly, tudo bem.

Vou testar sua instrução, mais estou com dificuldade em criar a variável [Ô]rs[Ô] no .net por este motivo não funcione.

grato.
OMAR2011 07/09/2015 11:45:03
#451109
Foi feito com projeto postado em outro post.
Isto é apenas uma forma.
Copie e cole num botão para teste.
sql = [Ô]Select cod From TbFerrtas[Ô]
Dim objCmd As New MySqlCommand(sql, objConexao)
Dim ValorTotal As Long
Dim das As New MySqlDataAdapter(objCmd)
Dim dts As New DataTable
das.Fill(dts)
ValorTotal = dts.Compute([Ô]MAX(Cod)[Ô], [Ô][Ô])
MessageBox.Show(ValorTotal)
MessageBox.Show(ValorTotal + 1) [ô]Aqui adicionar + 1
ACCIOLLY 07/09/2015 12:45:58
#451111
1º Baixe o connector/net do MySql e Instale
http://dev.mysql.com/downloads/connector/net/

2º Adicione ele nas suas referencias

3º Se preferir pegue essa classe de conexão pro mysql q criei

Imports System
Imports System.Data
Imports MySql.Data.MySqlClient
Imports System.Windows.Forms

Public Class conexao
Private caminhoBanco As String = [Ô]SERVER=localhost;DATABASE=systemworksdb;UID=root;PASSWORD=;[Ô]

Public Function Pesquisar(ByVal SQL As String) As DataTable
Dim dados As New DataTable
Try
dados.Rows.Clear()
Dim conectar As New MySqlConnection(caminhoBanco)
conectar.Open()
Dim comando As New MySqlCommand(SQL, conectar)
Dim adapter As New MySqlAdapter(comando)
adapter.Fill(dados)

Catch ex As Exception
MessageBox.Show([Ô]Erro de Comando SQL: [Ô] & ex.Message)
End Try

Return dados
End Function

Public Sub CRUD(ByVal SQL As String)
Try
Dim conectar As New MySqlConnection(caminhoBnco)
conectar.Open()
Dim comando As New MySqlCommand(SQL, conectar)
comando.ExecuteNonQuery()
conectar.Close()
Catch ex As Exception
MessageBox.Show([Ô]Erro de Comando SQL: [Ô] & ex.Message)
End Try
End Sub



End Class


Agora vou te explicar, eu particularmente prefiro trabalhar com DataTables do que RecordSets Daí a sua codificação que esta assim:

Dim SQL As String
SQL = [Ô]SELECT * FROM TbForn Order By Registro DESC[Ô]
Set rs = Cnn.Execute(SQL)
TxtReg.Text = Format$(rs.Fields([Ô]Registro[Ô]) + 1, [Ô]000000[Ô])


ficaria assim:

[ô]em general declarations
Imports conexao

[ô]no seu comando de pesquisa
Dim conn as New conexao [ô]essa é a instancia da classe de conexao
Dim dados as conn.Pesquisar([Ô]SELECT * FROM TbForn Order By Registro DESC LIMIT 1[Ô])
Dim ProxRegistro As Integer = Convert.toInt16(dados.Rows(0)([Ô]codigo_registro[Ô]).ToString()) + 1 [ô]código_registro na verdade é o campo da tabela
TxtReg.Text = Format$(ProxRegistro.toString(), [Ô]000000[Ô])


Isso porque quando vc trabalha com recordset vc pega todo o banco, e o datatable vc só pega os valores que vc quer segundo o seu SQL
Página 1 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas