MOSTRAR_PROXIMO_REGISTRO_CAMPO
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;
funcionava perfeitamente agora como faço no vs.net 2005.
Grato 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.
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
NICKOSOFT tem toda Razão. :)
Nickosoft, tudo bem.
Viu minha conexao não eh com um dataset e com um modulo veja;
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;
Como posso fazer parece simples mais estou tomando um show .net
Grato.
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.
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!
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!
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.
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.
Mostre o código e o erro, assim fica mais fácil saber o que está errado.
Abraços!
Abraços!
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
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.
Vou testar sua instrução, mais estou com dificuldade em criar a variável [Ô]rs[Ô] no .net por este motivo não funcione.
grato.
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
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
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
Agora vou te explicar, eu particularmente prefiro trabalhar com DataTables do que RecordSets Daà a sua codificação que esta assim:
ficaria assim:
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
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
Tópico encerrado , respostas não são mais permitidas