CADASTRO CONEXÃO MYSQL PARA ESTUDO

LUIZCARLOS 24/06/2014 23:23:47
#439147
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.
NAUTILUZ 25/06/2014 14:49:35
#439166
[ô]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.

LUIZCARLOS 25/06/2014 20:47:43
#439176
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.
ALVAROVB2009 26/06/2014 08:50:35
#439180
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
LUIZCARLOS 26/06/2014 22:23:02
#439224

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
ALVAROVB2009 30/06/2014 12:28:26
#439269
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
Tópico encerrado , respostas não são mais permitidas