CLASSE PARA ISERCAO/ALTERACAO/DELECAO DE DADOS
Boa noite amigos, com o crescimento do meu codigo fonte, gostaria de reduzir o mesmo, criando uma classe para que minhas operações com o banco diminuissem, eu ja fiz a rotina de insert into e delete, ta faltando apenas a de update, se alguem ja tiver essa classe ou ate mesmo um modulo que faz isso, agradeceria muito, ou so a funcao de alteraçao.
porque vc não cria uma classe só que faça tudo?
Entao marcelo, ai que ta.. eu tou fazendo.. so que a minha alteraçao dos dados nao esta dando certo.. utilizo mysql
veja so.. a funcao que estou fazendo esta me passando a seguinte sintaxe quando peço a alteracao..
sempre que no mysql deveria sair assim
Abaixo a funçao que estou utilizando.. ou tentando ne.. rsrs..
Public Enum TipoSQL
INCLUIR = 0
EDITAR = 1
EXCLUIR = 2
End Enum
Global Const Aspas = “â€â€â€
Public Function FuncaoSQL(QualSQL As TipoSQL, Tabela As String, Optional Campo As Variant, Optional Valor As Variant, Optional CampoChave As String, Optional ValorChave As String) As String
sql = [Ô]UPDATE [Ô] & Tabela & [Ô] SET [Ô]
For I = LBound(Campo) To UBound(Campo)
sql = sql & Campo(I) & [Ô] = [Ô] & Aspas & Valor(I) & Aspas & [Ô], [Ô]
Next I
sql = Mid(sql, 1, Len(sql) - 2) & [Ô] WHERE [Ô] & CampoChave & [Ô] = [Ô] & Aspas & ValorChave & Aspas
veja so.. a funcao que estou fazendo esta me passando a seguinte sintaxe quando peço a alteracao..
? sql
UPDATE cadusuarios SET userlogin, usersenha = [ô][ô]teste, [ô]testemaria[ô][ô] WHERE userid = [ô]2[ô]
sempre que no mysql deveria sair assim
Update cadusuarios SET userlogin=[ô]teste[ô],usersenha=[ô]testemaria[ô] where userid=[ô]2[ô]
Abaixo a funçao que estou utilizando.. ou tentando ne.. rsrs..
Public Enum TipoSQL
INCLUIR = 0
EDITAR = 1
EXCLUIR = 2
End Enum
Global Const Aspas = “â€â€â€
Public Function FuncaoSQL(QualSQL As TipoSQL, Tabela As String, Optional Campo As Variant, Optional Valor As Variant, Optional CampoChave As String, Optional ValorChave As String) As String
sql = [Ô]UPDATE [Ô] & Tabela & [Ô] SET [Ô]
For I = LBound(Campo) To UBound(Campo)
sql = sql & Campo(I) & [Ô] = [Ô] & Aspas & Valor(I) & Aspas & [Ô], [Ô]
Next I
sql = Mid(sql, 1, Len(sql) - 2) & [Ô] WHERE [Ô] & CampoChave & [Ô] = [Ô] & Aspas & ValorChave & Aspas
http://www.drivehq.com/file/df.aspx/publish/afsystems/PublicFolder/CCargos.7z
Olha acima segue o link com uma Classe CCargos + o formulario de cadastro que ela usa.... ve se serve
pra voce usar ela como base. Vc tem que instanciar o formulario como objeto e passar a classe tb como objeto para dentro do metodo editar que eu criei nesse form...entao vc cria ela assim no seu codigo: obs tem que pegar as ocxs que vc acha aqui no site mesmo...ou entao troque os botoes pelos do vb6 mesmo...
poconexao é a conexao do banco, no caso vc passa a sua conexao.
Dim voCargos As CCargos
Dim voForm_Cargos As FORM_Cad_Cargos
Set voCargos = New CCargos
Set voForm_Cargos = New FORM_Cad_Cargos
voForm_Cargos.Editar poConexao, voCargos, , True
Set voForm_Cargos = Nothing
Set voCargos = Nothing
outra coisa insira esta function de Sequence em seu modulo....
Public Function NroSequenceSQL(ByRef aoConexao As ADODB.Connection, ByVal asNomeTabelaSequence As String) As Long
[ô]ONDE asNomeTabelaSequence E O NOME DE UMA TABELA QUE:
[ô] - CONTENHA UM REGISTRO (NEM MAIS NEM MENOS)
[ô] - TENHA UMA A COLUNA DE SEQUENCE SE CHAME [Ô]NEXTVAL[Ô]
Dim voRs As ADODB.Recordset, sSeq As String
Set voRs = New ADODB.Recordset
voRs.CursorLocation = adUseServer
voRs.Open [Ô]SELECT NEXTVAL FROM [Ô] & asNomeTabelaSequence, aoConexao, adOpenDynamic, adLockPessimistic, adCmdText
voRs!NEXTVAL.Value = voRs!NEXTVAL.Value + 1
voRs.Update
NroSequenceSQL = voRs!NEXTVAL
voRs.Close
Set voRs = Nothing
End Function
Olha acima segue o link com uma Classe CCargos + o formulario de cadastro que ela usa.... ve se serve
pra voce usar ela como base. Vc tem que instanciar o formulario como objeto e passar a classe tb como objeto para dentro do metodo editar que eu criei nesse form...entao vc cria ela assim no seu codigo: obs tem que pegar as ocxs que vc acha aqui no site mesmo...ou entao troque os botoes pelos do vb6 mesmo...
poconexao é a conexao do banco, no caso vc passa a sua conexao.
Dim voCargos As CCargos
Dim voForm_Cargos As FORM_Cad_Cargos
Set voCargos = New CCargos
Set voForm_Cargos = New FORM_Cad_Cargos
voForm_Cargos.Editar poConexao, voCargos, , True
Set voForm_Cargos = Nothing
Set voCargos = Nothing
outra coisa insira esta function de Sequence em seu modulo....
Public Function NroSequenceSQL(ByRef aoConexao As ADODB.Connection, ByVal asNomeTabelaSequence As String) As Long
[ô]ONDE asNomeTabelaSequence E O NOME DE UMA TABELA QUE:
[ô] - CONTENHA UM REGISTRO (NEM MAIS NEM MENOS)
[ô] - TENHA UMA A COLUNA DE SEQUENCE SE CHAME [Ô]NEXTVAL[Ô]
Dim voRs As ADODB.Recordset, sSeq As String
Set voRs = New ADODB.Recordset
voRs.CursorLocation = adUseServer
voRs.Open [Ô]SELECT NEXTVAL FROM [Ô] & asNomeTabelaSequence, aoConexao, adOpenDynamic, adLockPessimistic, adCmdText
voRs!NEXTVAL.Value = voRs!NEXTVAL.Value + 1
voRs.Update
NroSequenceSQL = voRs!NEXTVAL
voRs.Close
Set voRs = Nothing
End Function
Amigos.. nao e bem isso que estou precisando não.. vejam só, eu tenho uma tela por exemplo.. cadastro de usuarios, onde eu coloco as informacoes de NOME, USUARIO , SENHA... no insert into para nao ser preciso eu ir no cadastro de usuarios e dar um insert into toda hora.. eu tenho uma funcao em um modulo que faz isso para mim, eu informo so os textbox que vao passar a informacao para o modulo executar, exemplo.. eu tenho os textbox, entao eu quero so fazer mais ou menos o ssteuinte..
FuncaoEditar EDITAR, [Ô]cadusuarios[Ô], addCampos(campo1,campo2,campo3),AddValores(text1.text,text2.text),[Ô]id[Ô],[Ô]1[Ô]
Ou seja, ele vai executar essa string no meu modulo
FuncaoEditar EDITAR, [Ô]cadusuarios[Ô], addCampos(campo1,campo2,campo3),AddValores(text1.text,text2.text),[Ô]id[Ô],[Ô]1[Ô]
Ou seja, ele vai executar essa string no meu modulo
Resolvido, Barros e Alexandre.. muito obrigado pela força..!!!
Tópico encerrado , respostas não são mais permitidas