Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Beavis440

Criando função para inserir dados em um banco de dados

Recommended Posts

Pessoal estou quase conseguindo o que eu quero.

Aqui esta um função que estou criando como ferramente, para que em qualquer projeto eu possa usala.

 

Public Function SQLIncluir(SQLTabela As String, SQLColuna As String, VariavelConsulta As String, SQLColuna1 As String, SQLColuna2 As String, SQLColuna3 As String, SQLColuna4 As String, SQLColuna5 As String, SQLColuna6 As String, SQLColuna7 As String, SQLColuna8 As String, SQLColuna9 As String, SQLColuna10 As String, SQLColuna11 As String, SQLColuna12 As String, SQLColuna13 As String, SQLColuna14 As String, SQLColuna15 As String, SQLColuna16 As String, SQLColuna17 As String, SQLColuna18 As String, SQLColuna19 As String, SQLColuna20 As String, SQLColuna21 As String, SQLColuna22 As String, Item1 As String, Item2 As String, Item3 As String, Item4 As String, Item5 As String, Item6 As String, Item7 As String, Item8 As String, Item9 As String, Item10 As String, Item11 As String, Item12 As String, Item13 As String, Item14 As String, Item15 As String, Item16 As String, Item17 As String, Item18 As String, Item19 As String, Item20 As String, Item21 As String, Item22 As String)
   If SQLSelect(SQLTabela, SQLColuna, VariavelConsulta) = True Then
       MsgBox "Cliente ja cadastrado!", vbInformation, "Cadastro"
       SQLIncluir = True
   Else
       SQLIncluir = False
       Abre_Conexao
           SQL = "Select * from " & SQLTabela & ""
           Tabela.Open SQL, conexao, adOpenForwardOnly, adLockOptimistic
           With Tabela
               .AddNew
               .Fields("" & SQLColuna1 & "") = Item1
               .Fields("" & SQLColuna2 & "") = Item2
               .Fields("" & SQLColuna3 & "") = Item3
               .Fields("" & SQLColuna4 & "") = Item4
               .Fields("" & SQLColuna5 & "") = Item5
               .Fields("" & SQLColuna6 & "") = Item6
               .Fields("" & SQLColuna7 & "") = Item7
               .Fields("" & SQLColuna8 & "") = Item8
               .Fields("" & SQLColuna9 & "") = Item9
               .Fields("" & SQLColuna10 & "") = Item10
               .Fields("" & SQLColuna11 & "") = Item11
               .Fields("" & SQLColuna12 & "") = Item12
               .Fields("" & SQLColuna13 & "") = Item13
               .Fields("" & SQLColuna14 & "") = Item14
               .Fields("" & SQLColuna15 & "") = Item15
               .Fields("" & SQLColuna16 & "") = Item16
               .Fields("" & SQLColuna17 & "") = Item17
               .Fields("" & SQLColuna18 & "") = Item18
               .Fields("" & SQLColuna19 & "") = Item19
               .Fields("" & SQLColuna20 & "") = Item20
               .Fields("" & SQLColuna21 & "") = Item21
               .Fields("" & SQLColuna22 & "") = Item22
               .Update
           End With
       Fecha_Conexao
   End If
End Function

 

Essa função tem capacidade armazenar informações de 22 itens.

Porem queria poder usar essa mesma função em outros projetos, mas com quantidades de itens diferentes, por exemplo menos quantidade.

Aqui tem um exmplo:

 

Private Sub cmdSalvar_Click()
   VereficaCamposCadastro
       If ItensObrigatorios = False Then
           MsgBox "Preencha os campos obrigatórios!", vbInformation, "Cadastro"
       Else
           If SQLIncluirCadastro("CadClientes", "CPF", txtCPF, "CPF", "Cliente", "Empresa", "ResInforma", "Endereco", "Bairro", "Cidade", "Estado", "Telefone", "Celular", "CEP", "RG", "LocTrabalho", "Veiculo", "Marca", "Ano", "Cor", "Placa", "ResEmpresa", "Data", "KM", "", txtCPF, txtCliente, txtEmpresa, txtResInfoma, txtEndereco, txtBairro, txtCidade, txtEstado, txtTelefone, txtCelular, txtCEP, txtRG, txtLocTrabalho, txtVeiculo, txtMarca, txtAno, txtCor, txtPlaca, txtResEmpresa, txtData, txtKM, "") = False Then
               LimpaCamposCadastro
           End If
       End If
   Data
End Sub

 

Pela contagem eu dexei a SQLColuna16 e o Item16 vazios (""), bom o que eu quero é que quando eu responder que essa coluna e esse item não tem informações o código

.Fields("" & SQLColuna16 & "") = Item16

não execute.

Assim posso usar essa função em qualquer projeto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use ParamArray ao invés de parâmetros pré-definidos, assim você pode adicionar infinitos parâmetros e a unica coisa que você tem que fazer é tornar tudo modificável adicionando alguns fors para poder preencher diversos itens de acordo com o tamanho do array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por exemplo, uma função de soma (vou usar isto como exemplo). Para eu criar uma função simples basta:

 

public shared function soma(byval a as double, b as double) as double

return a+b

end function

 

 

Agora esta função só funcionaria para dois números, a e b, se eu quisesse criar uma função com infinitos números de soma? Ai entramos nos ParamArrays:

 

 

Public Shared Function soma(ParamArray a() As Double) As Double

       Dim resultado As Double = 0
       For i As Integer = 0 To a.Length
           resultado = resultado + a(i)
       Next i

       Return resultado

   End Function

 

 

Desta maneira eu posso chamar a função desta maneira:

 

 soma(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 2, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 2, 4, 5, 4, 3, 6, 5, 4, 7, 6)

 

E ele vai somar, na ordem, todos os números do array.

 

No seu caso não é diferente, crie um paramArray para as colunas e as linhas e faça dentro delas um for, assim você pode usar a função para tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, ele vai somar na ordem, se fosse "Soma(2,2,2)" ele somaria (2+2)+2, ou seja, ele soma os dois primeiros e o resultado soma com o seguinte e assim por diante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Khaos,

 

Estou tentando fazer essa função do ParamArray, mas esta dando um erro quando eu chamo a função.

Ele acusa erro no primeiro número que coloco na função.

 

Soma(1,1,1,1)

 

Esse erro

 

Compile Error:

 

Type Mismatch: arry or user-defined type expected

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu fiz aqui e funcionou normal...

 

 

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MsgBox(soma(1, 1, 1, 1).ToString())


    End Sub


    Public Function soma(ParamArray a() As Integer)
        Dim result As Integer = 0


        For i As Integer = 0 To UBound(a) Step 1


            result += a(i)


        Next


        Return result


    End Function

Lembrando que isso é só um teste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que eu estou com VB6

Dai algumas coisas não consegui colocar como vc colocou tive que colocar assim:

 

Public Function soma(ParamArraya() As Integer)
Dim result As Integer
Dim i As Integer
result = 0
For i = 0 To UBound(a) Step 1
result = result + a(i)
Next
End Function

 

O "Return Result" não consegui colocar.

Estou tentando fazer esse teu exemplo funcionar para alterar ele para a estrutura que eu quero.

Compartilhar este post


Link para o post
Compartilhar em outros sites

VB6 não esta aceitando colocar ParaArray separado do a().

 

Dai já fiz ele assim:

 

 

 
public function soma(ParamArraya() as Integer) As Integer

 

Já tentei reescrever esse código de várias formas.

Não esta faltando instalar alguma referencia será??

Porque quando aperto Ctrl+J não esta aparecendo o comando ParamArray definido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu andei pesquisando o VB6 e achei uma função que parece funcionar.

 


Private Function Soma(ParamArrayargs() As Double) As Double

http://www.techrepublic.com/article/define-vb6-procedure-arguments-with-the-paramarray-keyword/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Finalmente consegui, vlw aiii Khaos

Ai esta o códido se alguém quiser pegar e modificar conforme as necessidades.

 

Public Function SQLIncluir(ParamArray Dadoss() As Variant) As 
Single    Dim MSG As String    Dim Titulo 
As String    Dim SQLTabela As String    
Dim SQLColuna As String    Dim VariavelConsulta As 
String    Dim SQLColuna1 As String    Dim 
Item As String        MSG = 
Dadoss(0)        Titulo = 
Dadoss(1)        SQLTabela = 
Dadoss(2)        SQLColuna = 
Dadoss(3)        VariavelConsulta = 
Dadoss(4)        If SQLColuna <> 
"Nada" 
Then            If 
SQLSelect(SQLTabela, SQLColuna, VariavelConsulta) = True 
Then                
SQLIncluir = 
False                
Exit 
Function            
Else                
SQLIncluir = 
True            End 
If        End 
If        SQLIncluir = 
True        
Abre_Conexao        SQL = "Select * from 
" & SQLTabela & ""        
Tabela.Open SQL, conexao, adOpenForwardOnly, 
adLockOptimistic        With 
Tabela            
.AddNew            
For i = 5 To 
UBound(Dadoss)                
SQLColuna1 = 
Dadoss(i)                
i = i + 
1                
Item = 
Dadoss(i)                
.Fields("" & SQLColuna1 & "") = 
Item            Next 
i                
.Update        End 
With    If MSG <> "Nada" 
Then        MsgBox "" & MSG & "", 
vbInformation, "" & Titulo & ""    End 
If    Fecha_Conexao

End Function    

No meu caso fiz o ParamArray (0) até o (4) fixos para a consulta, pois sempre será apenas 4 itens. E para add os itens na tabela fiz para ser a partir do ParamArray(5) para ser colocado quantos precisar.

Obrigado mais uma vez pela ajuda aii.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.