GRAVANDO DADOS NA ARRAY

IRENKO 25/04/2007 13:48:24
#213705
Bom pessoal preciso de ajuda para começar pois nem sei como, seguinte:

Tenho um TextNome e TextCod no Form, preciso criar uma variavel array (não sei se é possivel) para gravar os dados desses controles para posteriomente gravar no Banco. Acontece que quando vou criar um novo documento o mesmo pode ter ate 100 items e devo gravar na variavel um a um, ou seja, o primeiro Nome e Codigo na primeira variavel e ssim por diante. Como posso fazer isso?


USUARIO.EXCLUIDOS 25/04/2007 14:35:39
#213715
Resposta escolhida
Amigo IRENKO

Criei um exemplo aqui, mas ao invés de trazer os dados de textbox eu leio de um txt.
Veja se essa situação ja atende sua necessidade.

Private Sub Command1_Click()
Dim Arq As Integer
Dim Array_Arquivo As New Collection
Dim i As Integer
Dim Linha As String

Arq = FreeFile
Open "C:\Documents and Settingsenatol\Desktop\NEW.TXT" For Input As #Arq

i = 1
Do While Not EOF(Arq)
Line Input #Arq, Linha

' Aqui vc adiciona um item
Array_Arquivo.Add Linha, CStr(i)

'Aqui vc le um item
'MsgBox Array_Arquivo.Item(i)


i = i + 1
Loop

Close #Arq

End Sub


um abraço.
IRENKO 25/04/2007 15:56:09
#213733
Renato, sinceramente não estou sabendo adaptar para o que quero. A teoria é o seguinte: Onde eu coloco o TextBox para a rotina buscar direto nele e gravar no array?


USUARIO.EXCLUIDOS 25/04/2007 16:06:31
#213735
ok amigo.

seria aqui:


--> Array_Arquivo.Add Textbox.text, CStr(i)

o importante é vc compreender o conceito deste array(coleção).
espero que tenha ajudado
LIONHEART 25/04/2007 16:28:02
#213740
Private Type Dados
Nome as String
Codigo as String
End Type


Aí pra usar é só fazer


Dim tArray(1 to 10) as Dados

tArray(1).Codigo = 10
tArray(1).Nome = "Thiago"
tArray(2).Codigo = 15
tArray(2).Nome = "Sei lá o que"

....

e por aí vai.
Bem Simples, melhor que arquivo
USUARIO.EXCLUIDOS 25/04/2007 16:34:22
#213742
concordo com o lion.

porém lion, como ficaria se tivessemos um numero indeterminado de arrays ??


e o lance do arquivo que eu utilizei foi apenas para trazer dados de algum local.

um abraço.
IRENKO 25/04/2007 17:52:44
#213757
Pessoal, agradeço pelas dicas mas não estou sabendo manipular a tal da array. Vou tentar ser mais claro na minha teoria.

No form tenho um TextNome e um botão (Gravar), quando digitar Pedro e mandar gravar, gravo na variavel(array) e limpo o TextNome. Digito outro, João e gravo, assim por diante, depois mando para o banco. Mas todos que digitar tem estar quardados. Como fazer isso? Alguem pode montar um exemplo simples para que eu possa começar?
FGSANTOS 25/04/2007 18:18:06
#213767
Vc pode fazer assim:

Declara uma variável global tipo integer, por exemplo nAux

No load do seu form...

nAux = 1

No Botao gravar

 
Redim Preserve aCampos(nAux,1)
aCampos(nAux,0) = "Nome": aCampos(nAux,1) = "'" & txtNome.Text & "'"
nAux = nAux + 1


Assim, toda vez que clicar em Gravar vai redimensionar o array aCampos preservando o que já foi incluído nele. Depois para jogar no banco vc vai saber, pois sua dúvida era como manipular um array... rsrsrsrs
USUARIO.EXCLUIDOS 26/04/2007 09:09:30
#213808
Amigão, veja se agora consegue entender melhor.

Dim i As Integer
Dim x As Integer

Private Sub cmdApresentar_Arrays_Click()

'Apresentamos todos items da coleção
For x = 0 To i - 1
MsgBox Array_Nome.Item(CStr(x))
Next

End Sub


Private Sub cmdGravar_Click()
'Adicionamos um item na coleção
Array_Nome.Add txtNome.Text, CStr(i)

'Soma 1 na variavel para proximo item
i = i + 1

'limpamos textbox nome
txtNome.Text = ""

'voltamos com o foco para o text nome
txtNome.SetFocus
End Sub


Private Sub Form_Load()
' Iniciamos variavel de array com 0
i = 0
End Sub

IRENKO 26/04/2007 10:30:48
#213822
Renato, valeu amigão!! Fiz conforme abaixo e esta dando certo, como são varios items para cadastro a maneira abaixo esta correta? Não vo encerrar agora pois tenho outras dívidas referente a esse procedimento. OK?


Dim i As Integer
Dim x As Integer
Dim Array_Nome As New Collection
Dim Array_Cod As New Collection

Private Sub CmdApresentar_Click()
'Apresentamos todos items da coleção
For x = 0 To i - 1
MsgBox Array_Nome.Item(CStr(x)) & " " & Array_Cod.Item(CStr(x))
'MsgBox
Next
End Sub

Private Sub CmdGravar_Click()

'Adicionamos um item na coleção
Array_Nome.Add TxtNome.Text, CStr(i)
Array_Cod.Add TxtCod.Text, CStr(i)
'Soma 1 na variavel para proximo item
i = i + 1

'limpamos textbox nome
TxtNome.Text = ""
TxtCod.Text = ""
'voltamos com o foco para o text nome
TxtNome.SetFocus
End Sub

Private Sub UserForm_Initialize()
' Iniciamos variavel de array com 0
i = 0
TxtNome.SetFocus
End Sub

ELUCIMAR 26/04/2007 10:35:02
#213824
Porque você não usa ao invés de Array um Recordset Desconectado fica bem mais simples e mais prático exemplo:
Declare a Variavel Rs na seção general do Form ou como variavel Publica, dependendo da sua necessidade

Private Sub CriarRecordset()
Set Rs = New Adodb.Recordset
With Rs
.Fields.Append "Codigo", adDouble
.Fields.Append "Nome", adVarChar, 50
.Open
End With
End Sub


Ao abrir o Form você chama a Rotina CriarRecordset
Para incluir Registros na variavel Recordset é simples
With Rs
.AddNew
!Numero = CampoNumero
!Nome = CampoNome
.Update
End With

Para Passar para seu banco de Dados basta fazer um Loop pelo Recordset passando valor por valor para o seu banco.


Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas