CADASTRO CONEXÃO MYSQL PARA ESTUDO
pesquisei aqui no vbmania e achei uma agenda simples em mysql.
mas eu precisava de algo mais didático como muitos cadastros que vi por aqui no vbmania.
*conexão
*pesquisa
*edição (Adicionar,Editar,Excluir,Salvar)
*salvar foto no bd mysql
grato a todos.
mas eu precisava de algo mais didático como muitos cadastros que vi por aqui no vbmania.
*conexão
*pesquisa
*edição (Adicionar,Editar,Excluir,Salvar)
*salvar foto no bd mysql
grato a todos.
[ô]Segue comandos basicos
Dim Bd As Database
Dim Rbd As Recordset
bdir = [Ô]e:\bd1.mdb[Ô]
If Dir(bdir) <> [Ô][Ô] Then Kill bdir
Set Bd = DBEngine.Workspaces(0).CreateDatabase(bdir, dbLangGeneral) [ô]cria banco de dados
Senha = [Ô]1[Ô]
Bd.NewPassword [Ô][Ô], Senha [ô]cria a senha
Bd.Execute [Ô] CREATE TABLE Config (Nome TEXT(255) ) ;[Ô] [ô]cria tabela
Bd.Execute [Ô]ALTER TABLE Config ADD COLUMN Texto TEXT(255);[Ô] [ô]add coluna
Bd.Execute [Ô]ALTER TABLE Config ADD COLUMN Tex TEXT(255);[Ô] [ô]add coluna para teste
Bd.Execute [Ô]ALTER TABLE Config Drop COLUMN Tex ;[Ô] [ô]apaga coluna para teste
Set Rbd = Bd.OpenRecordset([Ô]SELECT Texto FROM Config WHERE Nome=[ô]Interface[ô];[Ô])
Bd.Execute [Ô] INSERT INTO Config (Nome,Texto) VALUES ( [ô]Senha[ô], [ô][Ô] & Senha & [Ô][ô] );[Ô] [ô]altera senha
Bd.Execute [Ô]UPDATE Config SET Texto= [ô][Ô] & 2 & [Ô][ô] WHERE Nome=[ô]Senha[ô] ;[Ô] [ô]modifica valores
MeuBd.Execute [Ô]DELETE * FROM Config WHERE Nome= [ô]Senha[ô];[Ô] [ô] * apaga toda a linha
Bd.Execute [Ô]DROP TABLE Config[Ô] [ô] apaga para teste
Bd.Close
[ô]DICAS
[ô]CREATE - cria tabelas
[ô]ALTER - Altera a quantidade de colunas na tabela ADD e DROP
[ô]INSERT - insere um registro no final da tabela
[ô]SELECT - seleciona uma linha da tebela para pegar ou modificar o valor
[ô]UPDATE - altera o valor de um registro na tabela
[ô]DELETE - apaga o registro especificado na tabela
[ô]DROP - Apaga a tebela
[ô]NOTAS
[ô]nomes de colunas nao pode ser palavras reservadas ou iguais
[ô]para setar valores de registro use aspas simples
[ô]todo comando sql e finalizado com ponto e virgula
Ja vi varias vezes os usuarios pedindo para gravar imagem no banco
de dados access. O Access nao consegue gravar a imagem diretamente
assim como outros bancos.Para que isso seja possivel, voce precisa
converter sua imagem em binario e depois gravar na tabela.
Primeiramente, voce precisa criar o seu campo no Banco de Dados do
tipo OLE. Depois é só usar as funções abaixo.
A função CopyFileToField coloca no seu campo a imagem escolhida e
a funcao CopyFieldToFile, coloca a imagem que esta gravada no banco
para uma image ou picture.
Function CopyFileToField()
Dim ChunkSize As Long
Dim FileNum As Integer
Dim Buffer() As Byte
Dim BytesNeeded As Long
Dim Buffers As Long
Dim Remainder As Long
Dim FileName As String
FileName = App.Path & [Ô]\FotoTemp.jpg[Ô]
Dim i As Long
If Len(FileName) = 0 Then
Exit Function
End If
If Dir(FileName) = [Ô][Ô] Then
Err.Raise vbObjectError, , [Ô]File not found: [Ô][Ô][Ô] & FileName & [Ô][Ô][Ô][Ô]
End If
ChunkSize = 65536
FileNum = FreeFile
Open FileName For Binary As #FileNum
BytesNeeded = LOF(FileNum)
Buffers = BytesNeeded \ ChunkSize
Remainder = BytesNeeded Mod ChunkSize
For i = 0 To Buffers - 1
ReDim Buffer(ChunkSize)
Get #FileNum, , Buffer
rsclientes.Fields([Ô]foto[Ô]).AppendChunk (Buffer)
Next
ReDim Buffer(Remainder)
Get #FileNum, , Buffer
rsclientes.Fields([Ô]foto[Ô]).AppendChunk (Buffer)
Close #FileNum
Kill FileName
End Function
Function CopyFieldToFile(strFileName As String, Controle As PictureBox) As String
Dim FileNum As Integer
Dim Buffer() As Byte
Dim BytesNeeded As Long
Dim Buffers As Long
Dim Remainder As Long
Dim Offset As Long
Dim r As Integer
Dim i As Long
Dim ChunkSize As Long
ChunkSize = 65536
BytesNeeded = rsclientes.Fields([Ô]foto[Ô]).FieldSize
If BytesNeeded > 0 Then
Buffers = BytesNeeded \ ChunkSize
Remainder = BytesNeeded Mod ChunkSize
If Dir(strFileName) <> [Ô][Ô] Then
Kill strFileName
End If
FileNum = FreeFile
Open strFileName For Binary As #FileNum
For i = 0 To Buffers - 1
ReDim Buffer(ChunkSize)
Buffer = rsclientes.Fields([Ô]foto[Ô]).GetChunk(Offset, ChunkSize)
Put #FileNum, , Buffer()
Offset = Offset + ChunkSize
Next
ReDim Buffer(Remainder)
Buffer = rsclientes.Fields([Ô]foto[Ô]).GetChunk(Offset, Remainder)
Put #FileNum, , Buffer()
Close #FileNum
End If
CopyFieldToFile = strFileName
Controle.Picture = LoadPicture(strFileName)
Kill strFileName
End Function
Com alguns ajustes, é possÃvel colocar o caminho da foto, a tabela
usada, o campo usado como parametro da funcao.
Só mais um detalhe. é importante lembrar que as imagens ocupam um
espaço grande dentro do banco de dados. Eu particularmente, antes
de jogar a imagem para o banco, converto ela para JPG, assim a
mesma imagem vai ocupar menos espaço.
Dim Bd As Database
Dim Rbd As Recordset
bdir = [Ô]e:\bd1.mdb[Ô]
If Dir(bdir) <> [Ô][Ô] Then Kill bdir
Set Bd = DBEngine.Workspaces(0).CreateDatabase(bdir, dbLangGeneral) [ô]cria banco de dados
Senha = [Ô]1[Ô]
Bd.NewPassword [Ô][Ô], Senha [ô]cria a senha
Bd.Execute [Ô] CREATE TABLE Config (Nome TEXT(255) ) ;[Ô] [ô]cria tabela
Bd.Execute [Ô]ALTER TABLE Config ADD COLUMN Texto TEXT(255);[Ô] [ô]add coluna
Bd.Execute [Ô]ALTER TABLE Config ADD COLUMN Tex TEXT(255);[Ô] [ô]add coluna para teste
Bd.Execute [Ô]ALTER TABLE Config Drop COLUMN Tex ;[Ô] [ô]apaga coluna para teste
Set Rbd = Bd.OpenRecordset([Ô]SELECT Texto FROM Config WHERE Nome=[ô]Interface[ô];[Ô])
Bd.Execute [Ô] INSERT INTO Config (Nome,Texto) VALUES ( [ô]Senha[ô], [ô][Ô] & Senha & [Ô][ô] );[Ô] [ô]altera senha
Bd.Execute [Ô]UPDATE Config SET Texto= [ô][Ô] & 2 & [Ô][ô] WHERE Nome=[ô]Senha[ô] ;[Ô] [ô]modifica valores
MeuBd.Execute [Ô]DELETE * FROM Config WHERE Nome= [ô]Senha[ô];[Ô] [ô] * apaga toda a linha
Bd.Execute [Ô]DROP TABLE Config[Ô] [ô] apaga para teste
Bd.Close
[ô]DICAS
[ô]CREATE - cria tabelas
[ô]ALTER - Altera a quantidade de colunas na tabela ADD e DROP
[ô]INSERT - insere um registro no final da tabela
[ô]SELECT - seleciona uma linha da tebela para pegar ou modificar o valor
[ô]UPDATE - altera o valor de um registro na tabela
[ô]DELETE - apaga o registro especificado na tabela
[ô]DROP - Apaga a tebela
[ô]NOTAS
[ô]nomes de colunas nao pode ser palavras reservadas ou iguais
[ô]para setar valores de registro use aspas simples
[ô]todo comando sql e finalizado com ponto e virgula
Ja vi varias vezes os usuarios pedindo para gravar imagem no banco
de dados access. O Access nao consegue gravar a imagem diretamente
assim como outros bancos.Para que isso seja possivel, voce precisa
converter sua imagem em binario e depois gravar na tabela.
Primeiramente, voce precisa criar o seu campo no Banco de Dados do
tipo OLE. Depois é só usar as funções abaixo.
A função CopyFileToField coloca no seu campo a imagem escolhida e
a funcao CopyFieldToFile, coloca a imagem que esta gravada no banco
para uma image ou picture.
Function CopyFileToField()
Dim ChunkSize As Long
Dim FileNum As Integer
Dim Buffer() As Byte
Dim BytesNeeded As Long
Dim Buffers As Long
Dim Remainder As Long
Dim FileName As String
FileName = App.Path & [Ô]\FotoTemp.jpg[Ô]
Dim i As Long
If Len(FileName) = 0 Then
Exit Function
End If
If Dir(FileName) = [Ô][Ô] Then
Err.Raise vbObjectError, , [Ô]File not found: [Ô][Ô][Ô] & FileName & [Ô][Ô][Ô][Ô]
End If
ChunkSize = 65536
FileNum = FreeFile
Open FileName For Binary As #FileNum
BytesNeeded = LOF(FileNum)
Buffers = BytesNeeded \ ChunkSize
Remainder = BytesNeeded Mod ChunkSize
For i = 0 To Buffers - 1
ReDim Buffer(ChunkSize)
Get #FileNum, , Buffer
rsclientes.Fields([Ô]foto[Ô]).AppendChunk (Buffer)
Next
ReDim Buffer(Remainder)
Get #FileNum, , Buffer
rsclientes.Fields([Ô]foto[Ô]).AppendChunk (Buffer)
Close #FileNum
Kill FileName
End Function
Function CopyFieldToFile(strFileName As String, Controle As PictureBox) As String
Dim FileNum As Integer
Dim Buffer() As Byte
Dim BytesNeeded As Long
Dim Buffers As Long
Dim Remainder As Long
Dim Offset As Long
Dim r As Integer
Dim i As Long
Dim ChunkSize As Long
ChunkSize = 65536
BytesNeeded = rsclientes.Fields([Ô]foto[Ô]).FieldSize
If BytesNeeded > 0 Then
Buffers = BytesNeeded \ ChunkSize
Remainder = BytesNeeded Mod ChunkSize
If Dir(strFileName) <> [Ô][Ô] Then
Kill strFileName
End If
FileNum = FreeFile
Open strFileName For Binary As #FileNum
For i = 0 To Buffers - 1
ReDim Buffer(ChunkSize)
Buffer = rsclientes.Fields([Ô]foto[Ô]).GetChunk(Offset, ChunkSize)
Put #FileNum, , Buffer()
Offset = Offset + ChunkSize
Next
ReDim Buffer(Remainder)
Buffer = rsclientes.Fields([Ô]foto[Ô]).GetChunk(Offset, Remainder)
Put #FileNum, , Buffer()
Close #FileNum
End If
CopyFieldToFile = strFileName
Controle.Picture = LoadPicture(strFileName)
Kill strFileName
End Function
Com alguns ajustes, é possÃvel colocar o caminho da foto, a tabela
usada, o campo usado como parametro da funcao.
Só mais um detalhe. é importante lembrar que as imagens ocupam um
espaço grande dentro do banco de dados. Eu particularmente, antes
de jogar a imagem para o banco, converto ela para JPG, assim a
mesma imagem vai ocupar menos espaço.
ok NAUTILUZ achei intersante a sua forma de crir bd acces, mas o cadastro que preciso é em mysql.
Agradeço mesmo assim. vou aguardar mais colegas.
Agradeço mesmo assim. vou aguardar mais colegas.
Crie em um modulo
Public Db As ADODB.Connection
Public Sub AbreBanco()
Set Db = New ADODB.Connection
Db.Open [Ô]DRIVER={MySQL ODBC 5.1 Driver};Server=localhost;uid=usuariobanco;pwd=senhabanco;Database=nomebanco[Ô]
End Sub
Para chamar a conexão nos forms é simples
Quando vc iniciar o seu sistema, no form LOAD faça coloque o nome AbreBanco e não precisa mais abrir o banco, pois enqto o seu sistema ficar aberto o banco também fica
Private sub Form_Load()
AbreBanco
End Sub
E depois nos forms de cadastro, consulta etc
Aqui eu abro o meu banco para uma consulta nos parametros
Dim Rs As ADODB.Recordset
Set Rs = New ADODB.Recordset
Rs.Open [Ô]Select DiretorioBackup, diasbackup, logorelatorio, logoentrada from parametros[Ô], Db, adOpenKeyset, adLockPessimistic
Para preencher os campos, eu monto em cada form um MostraDados, esse [e um exemplo
Public Sub MostraDados()
MskVencimento.Mask = [Ô][Ô]
CboDespesa.Text = Banco!descricao
TxtValor.Text = Format(Banco!Valor, [Ô]###,###,##0.00[Ô])
MskVencimento.Text = Format(Banco!DataVencimento, [Ô]DD/MM/YYYY[Ô])
End Sub
Para incluir um registro, uso o sql
sSql = [Ô]INSERT INTO LancamentoDespesa (Descricao,Valor,DataVencimento) [Ô]
sSql = sSql & [Ô] VALUES ( [ô][Ô] & Trim(CboDespesa.Text) & [Ô][ô],[ô][Ô] & FormataValor(TxtValor.Text) & [Ô][ô],[ô][Ô] & Format(MskVencimento.Text, [Ô]YYYY-MM-DD[Ô]) & [Ô][ô])[Ô]
Db.Execute (sSql)
Para Alterar a mesma coisa, uso o sql
sSql = [Ô]UPDATE LancamentoDespesa SET valor = [ô][Ô] & FormataValor(TxtValor.Text) & [Ô][ô],DataVencimento = [ô][Ô] & Format(MskVencimento.Text, [Ô]YYYY/MM/DD[Ô]) & [Ô][ô][Ô]
sSql = sSql & [Ô] WHERE codlancamento = [Ô] & CodLancamento
Set Banco = Db.Execute(sSql)
Mensagem [Ô]Despesa alterada com sucesso[Ô]
Acho que com isso da para vc ter uma ideia do que fazer, qqer coisa posta ai ok
Ou entao se quiser pode acessar o http://www.macoratti.net/mysql_vb.htm que e uma base boa para aprender
Public Db As ADODB.Connection
Public Sub AbreBanco()
Set Db = New ADODB.Connection
Db.Open [Ô]DRIVER={MySQL ODBC 5.1 Driver};Server=localhost;uid=usuariobanco;pwd=senhabanco;Database=nomebanco[Ô]
End Sub
Para chamar a conexão nos forms é simples
Quando vc iniciar o seu sistema, no form LOAD faça coloque o nome AbreBanco e não precisa mais abrir o banco, pois enqto o seu sistema ficar aberto o banco também fica
Private sub Form_Load()
AbreBanco
End Sub
E depois nos forms de cadastro, consulta etc
Aqui eu abro o meu banco para uma consulta nos parametros
Dim Rs As ADODB.Recordset
Set Rs = New ADODB.Recordset
Rs.Open [Ô]Select DiretorioBackup, diasbackup, logorelatorio, logoentrada from parametros[Ô], Db, adOpenKeyset, adLockPessimistic
Para preencher os campos, eu monto em cada form um MostraDados, esse [e um exemplo
Public Sub MostraDados()
MskVencimento.Mask = [Ô][Ô]
CboDespesa.Text = Banco!descricao
TxtValor.Text = Format(Banco!Valor, [Ô]###,###,##0.00[Ô])
MskVencimento.Text = Format(Banco!DataVencimento, [Ô]DD/MM/YYYY[Ô])
End Sub
Para incluir um registro, uso o sql
sSql = [Ô]INSERT INTO LancamentoDespesa (Descricao,Valor,DataVencimento) [Ô]
sSql = sSql & [Ô] VALUES ( [ô][Ô] & Trim(CboDespesa.Text) & [Ô][ô],[ô][Ô] & FormataValor(TxtValor.Text) & [Ô][ô],[ô][Ô] & Format(MskVencimento.Text, [Ô]YYYY-MM-DD[Ô]) & [Ô][ô])[Ô]
Db.Execute (sSql)
Para Alterar a mesma coisa, uso o sql
sSql = [Ô]UPDATE LancamentoDespesa SET valor = [ô][Ô] & FormataValor(TxtValor.Text) & [Ô][ô],DataVencimento = [ô][Ô] & Format(MskVencimento.Text, [Ô]YYYY/MM/DD[Ô]) & [Ô][ô][Ô]
sSql = sSql & [Ô] WHERE codlancamento = [Ô] & CodLancamento
Set Banco = Db.Execute(sSql)
Mensagem [Ô]Despesa alterada com sucesso[Ô]
Acho que com isso da para vc ter uma ideia do que fazer, qqer coisa posta ai ok
Ou entao se quiser pode acessar o http://www.macoratti.net/mysql_vb.htm que e uma base boa para aprender
ALVAROVB2009 testei o seu codigo mas dá erro!
Private Sub Form_Load()
[ô]Para chamar a conexão nos forms é simples
[ô]Quando vc iniciar o seu sistema, no form LOAD faça coloque o nome AbreBanco e não precisa mais abrir o banco, pois enqto o seu sistema ficar aberto o banco também fica
AbreBanco
Dim Rs As ADODB.Recordset
Set Rs = New ADODB.Recordset
Rs.Open [Ô]Select numero,nome,endereco from tab_cadastros [Ô], db, adOpenKeyset, adLockPessimistic
MostraDados
End Sub
Public Sub MostraDados()
On Error GoTo Error
txtnumero.Text = Rs([Ô]numero[Ô])
If IsNull(Rs([Ô]nome[Ô])) Then
txtnome.Text = [Ô][Ô]
Else
txtnome.Text = Rs([Ô]nome[Ô])
End If
If IsNull(Rs([Ô]endereco[Ô])) Then
txtendereco.Text = [Ô][Ô]
Else
txtendereco.Text = Rs([Ô]endereco[Ô])
End If
[ô]MostraNumeroRegistro
On Error GoTo 0
Mostra_dados_Exit:
Exit Sub
Error:
MsgBox Err.Description, vbExclamation, [Ô]Erro em [Mostra_dados][Ô]
End Sub
[ô]MskVencimento.Mask = [Ô][Ô]
[ô]txtnumero.Text = Rs!numero
[ô]txtnome.Text = Rs!nome
[ô]txtendereco.Text = Rs!endereco
[ô]TxtValor.Text = Format(Banco!Valor, [Ô]###,###,##0.00[Ô])
[ô]MskVencimento.Text = Format(Banco!DataVencimento, [Ô]DD/MM/YYYY[Ô])
End Sub
Private Sub novo_Click()
sSql = [Ô]INSERT INTO tab_cadastros (numero,nome,endereco) [Ô]
sSql = sSql & [Ô] VALUES ([ô][Ô] & (txtnumero.Text) & [Ô][ô],[ô][Ô] & (txtnome.Text) & [Ô][ô],[ô]& (txtendereco.Text) & [Ô])[Ô]
db.Execute (sSql)
End Sub
LuizCarlos eu esqueci de informar que vc tem que ter o drive odbc instalado na sua máquina para fazer essa conexão, talvez seja essa a mensagem, más se o erro persistir fala qual é a mensagem que apresenta
Para baixar o drive odbc 5.1 que usei na conexão é Aqui
Para baixar o drive odbc 5.1 que usei na conexão é Aqui
Tópico encerrado , respostas não são mais permitidas