View Full Version : Dúvida Combobox (VB2005)


redshot
28-01-2008, 11:41
Boas.

Estou a fazer uma aplicação de gestão de stocks com ligação a uma base de dados SQL.

Como é que se faz para que ao adicionar, por exemplo, um IVA, apareçam esses valores numa combobox vindos da base de dados?

edit: numa fase mais avançada quero fazer com que o programa guarde primeiro os dados numa listview e depois os passe para a base de dados. Portanto, vou reformular a pergunta: Como é que se faz o que descrevi acima mas a partir de uma listview que está noutro formulário?

mOrSa
28-01-2008, 15:16
A melhor ideia, a meu ver, é criares uma tabela na Base de Dados com isso mesmo. Guardas os valores do IVA na tabela de IVA e no outro formulário vais ler os dados dessa mesma tabela!
Confuso?

Form1 (valores )-> Guardas o Valor na Base de Dados -> Form2 (ler valores da base de dados)

Será isso?
1abraço

redshot
28-01-2008, 15:53
Vou tentar fazer isso.

Tenho outra dúvida (não sei se era melhor criar outra thread mas cá vai):

Como é que se faz para ir buscar a um formulário qualquer um objecto e mexer nele como se estivesse no formulário activo?

No meu caso, quero ir buscar dados de uma listview dentro de um formulário "público" para os pôr noutro formulário, e mexer nesses dados como se fosse uma base de dados.

Agradeço desde já.

mOrSa
28-01-2008, 16:12
Ora bem, não sei se é isto que pretendes mas cá vai:

Supondo que tens um formulário pai (Form1) e chamas um segundo formulário (filho - Form2).
O formulário Form2 é a ficha de cliente e, como tal, tem o nome, a morada, etc...
Todavia, se queres que um desses objectos (form controls neste caso) já tenham valores ou estejam escondidos. Imagina que não queres que o campo idade esteja visível no Form2.
Para chamar o formulário Form2 tens que o instanciar primeiro o objecto Form2 com o código
Dim frm2 As New Form2e assim tens um novo objecto, que pertence ao Form1, formulário pai.
Posto isto, através de
frm2.NomeDoControlo.PropriedadeQueQueresAlterar = Valorconsegues alterar valores e/ou propriedades desse segundo formulário. Após isto basta invocar o método frm2.Show() para mostrar o formulário com as alterações já feitas!

Espero que responda às tuas questões!
1abraço

redshot
28-01-2008, 17:14
Sim, é isso mesmo que eu queria. Mas como eu sou mais ou menos um "iniciadinho" em visual basic, vou complicar ainda mais a questão... Desculpem lá, mas é estou a fazer um estágio e como as aulas não chegaram para nos preparar como devia ser, recorro aqui a este fórum... Espero que compreendam!!

Já consegui fazer essa ligação ao outro formulário, mas eu queria era passar os itens dessa listview "mãe", digamos, para a listview doutro formulário (que tem os menus principais e isso tudo). Mas como a base de dados já está normalizada, queria seleccionar os itens a por na listview principal e não metê-los todos iguais à da tabela "mãe" (do género de fazer o mesmo que se faz em SQL: Select tabela1.qualquercoisa1, tabela2.qualquercoisa2 FROM tabela1, tabela2 WHERE tabela1.qualquercoisa1 = tabela2.indicequalquercoisa2). Acho que é mais ou menos assim o que estava previsto inicialmente, antes de ter de fazer com que o programa guardasse quando lhe era pedido.

Acho que me fiz entender.... Mas se for preciso vou buscar o código em SQL original e ponho aqui....

Tentei pegar primeiro por um código que adiciona os itens desta forma:

Dim ls As New ListViewItem("1", 0)
ls.SubItems.Add("Item da primeira coluna")
ls.SubItems.Add("Item da segunda coluna")
ListView1.Items.Add(ls)

E tentei integrá-lo com um código que já usei para passar um valor de uma listview para uma label (e vice-versa) :

Label1.Text = (ListView1.Items(ListView1.SelectedItems(0).Index( )).SubItems(1).Text)

Mas não tive sorte. Acho que o problema deve estar mesmo neste último código, confundi-me todo ao misturar os dois.

E é tudo por agora. :) Até acho que o meu testamento vai ter menos palavras do que isto...

Obrigado desde já.

slowman
30-01-2008, 12:04
redshot, tive bastantes dificuldades em saber o que pretendes mas vou tentar deixar aqui umas dicas.

Quando precisares ir buscar os dados á BD usa um DataSet, bom e rápidos. Depois trabalhas nele como uma tabela e podes associar muito fácilmente a uma DataGridview que me parece melhro que uma listview.

Outra coisa que podes fazer é assim: Quando precisas passar valores de um componente (textbox, listview, etc) podes sempre criar uma variável desse tipo e fazer por exemplo com uma textbox:

- No form2 (sem ser o principal)
Public txtBox1 as textbox ' Atenção a variável tem que ser publica para ser vista pelas diferentes classes do projecto

'Algures no código quando vais retornar ao from principal chamado Form1


txtBox1= txtBoxComValorARetornar
Me.DialogResult = Windows.Forms.DialogResult.OK

Na codigo do Form1 onde chamas o form2 fazes assim

if me.showdialog = DialogResult.Ok
txtboxDoForm1.text=textBox1.text
end if

E podes fazer isso com qualquer componente.

Espero ter ajudado.


Cumps