[RISOLTO] Prendere ID da Combobox

Discussioni sulle caratteristiche di database
Rispondi
netsam
Messaggi: 9
Iscritto il: sabato 16 aprile 2011, 12:30

[RISOLTO] Prendere ID da Combobox

Messaggio da netsam »

Salve a tutti, è il mio primo messaggio sul forum. Avrei bisogno di un piccolo aiuto. Ho fatto un piccolo database che raccoglie le specie inserite in un erbario all'università.
semplificando:

Tabella Specie: (campi: ID_Specie, Nome_specie)
Tabella Erbario: (campi: ID_Specie, Località_ritrovamento, ecc.)

Ho fatto un formulario principale e secondario in cui scelgo la specie tramite una ListBox che mostra i nomi delle specie e quindi inserisce l'ID scelto dalla tabella Specie nella tabella Erbario.

Vorrei fare lo stesso con una Combobox, come faccio a PRENDERE L'ID della Specie dal record scelto e metterlo nella tabella ERBARIO ? Anche con una macro Basic ?

Mi dispiace se sono stato poco chiaro. Aspetto un vostro aiuto.

Ignazio
Ultima modifica di netsam il martedì 14 giugno 2011, 15:42, modificato 1 volta in totale.
Openoffice 3.1 su Windows Xp
giannidalmi
Messaggi: 62
Iscritto il: lunedì 21 febbraio 2011, 7:00

Re: Prendere ID da Combobox

Messaggio da giannidalmi »

ciao
ho aspettato per vedere se qualcuno prospettava soluzioni migliori ma .. se vuoi provare così...
io ho lavorato su una gestione biblioteca e nel form di inserimento libri ci sono delle combobox che visualizzano, ad esempio la lingua, e sono collegate alla tabella delle lingue con ID e LINGUA (come ID e SPECIE)
I dati inseriti vengono salvati alla pressisone di un bottone 'SALVA' che usa una ROWSET ma prima viene richiamata una piccola funzione che trova e memoriza l'ID della lingua
ora io te la allego, vedi se puoi farne buon uso
Se vuoi altre informazioni sul salvataggio 'via ROWSET' sono qua

Codice: Seleziona tutto

'trova l'ID del PAESE e della LINGUA in base al nome e lo salva
function salvaID(formulario as string, tabella as string, tipoID as string, nome as string, valore as string)
Dim oConnection As Object
dim Statement as object
dim ResultSet as object
dim doc as object
dim docCrl as object
dim Forms as object
dim Form as object
dim ID as integer
  
oConnection=ConnettiDB("biblio_I")
	Statement = oConnection.createStatement()
	Doc = StarDesktop.CurrentComponent
	DocCrl = Doc.getCurrentController()
	Forms = Doc.Drawpage.Forms
	Form = Forms.GetbyName(formulario)

  if valore = "" then
  else
	ResultSet = Statement.executeQuery("SELECT " & nome & "," & tipoID & " FROM " & tabella & "") 
	While ResultSet.next
	   if  ResultSet.getString(1)=valore then
 	   	    ID=ResultSet.getString(2)
       end if
	Wend
end if
salvaID=ID
end function
nella sub 'salvalibro' questa funzione è richiamata così
IDlingua = salvaID("INS_LIBRI", "lingue" , "IDlingue" , "lingua", form.getbyname("lingua").text )

ti allego anche la funzione 'connettiDB(nomedb)'

Codice: Seleziona tutto

' apre il database e imposta la connessione
Function connettiDB(nomedb)
Dim DatabaseContext As Object
Dim DataSource As Object
Dim Connection As Object
Dim InteractionHandler as Object

	DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
	DataSource = DatabaseContext.getByName(nomedb)
	If Not DataSource.IsPasswordRequired Then
	Connection = DataSource.GetConnection("","")
	Else
	InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
	Connection = DataSource.ConnectWithCompletion(InteractionHandler)
	End If
	connettiDB=Connection
End function
spero di esserti utile e soprattutto che qualcun altro trovi soluzioni più immediate perchè riconosco che la mia è un pò 'contorta'
ciao
open office 3.2.1
window 7
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Prendere ID da Combobox

Messaggio da vladko »

può andare?


ricorda fare backup spesso
Allegati
erbario.odb
(17.92 KiB) Scaricato 296 volte
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
netsam
Messaggi: 9
Iscritto il: sabato 16 aprile 2011, 12:30

Re: Prendere ID da Combobox

Messaggio da netsam »

Grazie tanto per le vostre risposte. Ho ancora qualche dubbio :?: e soprattutto poco tempo :( !! ma ho già avuto dei progressi. Vi farò sapere qualcosa. :)
Openoffice 3.1 su Windows Xp
netsam
Messaggi: 9
Iscritto il: sabato 16 aprile 2011, 12:30

Re: Prendere ID da Combobox

Messaggio da netsam »

Salve a tutti, sono riuscito a salvare l'ID preso dalla tabella Elenco_Funghi nella tabella Erbario.

Adesso il mio obiettivo è richiamare il Nome della Specie dalla tabella Elenco_Funghi, dato l'ID preso da Erbario, e metterlo nella ComboBox del formulario.

Ci sono pure riuscito, il problema è come fare l'operazione in automatico al caricamento del Formulario e quando avanzano i record di Erbario.

p.s. per adesso ho risolto con due pulsanti che fanno l'operazione ma mi sembra poco ortodosso e soprattutto poco funzionale.

Allego il file già pronto

Grazie per qualunque aiuto
Allegati
Erbario Test.odb
(119.47 KiB) Scaricato 251 volte
Openoffice 3.1 su Windows Xp
netsam
Messaggi: 9
Iscritto il: sabato 16 aprile 2011, 12:30

Re: Prendere ID da Combobox

Messaggio da netsam »

Avevo dimenticato il codice basic. importatelo nelle macro personali sotto il nome Module1. :(
Allegati
Module1.odt
(15.21 KiB) Scaricato 269 volte
Openoffice 3.1 su Windows Xp
giannidalmi
Messaggi: 62
Iscritto il: lunedì 21 febbraio 2011, 7:00

Re: Prendere ID da Combobox

Messaggio da giannidalmi »

vedo che hai fatto un gran lavoro, complimenti :bravo:
purtroppo in questo periodo sono molto a corto di tempo e non posso fare tentativi per aiutarti
però butto giù un consiglio: forse potresti provare ad associare le due macro ora associate ai bottoni agli eventi 'caricamento del formulario' e/o 'testo modificato' della combo
auguri
ciao
open office 3.2.1
window 7
netsam
Messaggi: 9
Iscritto il: sabato 16 aprile 2011, 12:30

Re: Prendere ID da Combobox

Messaggio da netsam »

Ok, al 'caricamento del formulario' mi inserisce correttamente il nome della Specie.
Adesso io voglio che QUANDO cambia l'ID nella TextBox del formulario, cambi anche la Specie nella Combo.

Ho associato la macro che recupera il nome della Specie all'evento Testomodificato del TextBox ID ma quando, ad esempio, vado al RECORD SUCCESSIVO, cambia si il testo col nuovo ID ma non succede nulla alla ComboBox.

Forse devo fare una specie di Commit per confermare la modifica?
Openoffice 3.1 su Windows Xp
giannidalmi
Messaggi: 62
Iscritto il: lunedì 21 febbraio 2011, 7:00

Re: Prendere ID da Combobox

Messaggio da giannidalmi »

visto che piove ho un pò di tempo e ho provato a vedere il tuo file
faccio un pò fatica a capire come hai lavorato perchè non riesco a distinguere quando lavori (aggiorni) sul formulario e quando lavori (aggiorni) sulle tabelle
credo che dovresti distinguere bene le due cose e distinguere anche il formulario per aggiungere dati dal formulario per visualizzare e modificare i dati già inseriti
io ho imparato a lavorare in questo modo e quindi non riesco ad aiutarti diversamente
ad esempio trovo per me impossibile che un unico formulario possa recuperare prima l'id dal nome e poi anche il nome dall'id: ma nel primo caso stai aggiungendo un nuovo record, nel secondo stai scorrendo i vecchi record, o no?
bello che qualcuno ti sollevi dubbi e problemi ? :)
open office 3.2.1
window 7
codicem
Messaggi: 57
Iscritto il: venerdì 30 aprile 2010, 14:30

Re: Prendere ID da Combobox

Messaggio da codicem »

Scusa, ma perchè non hai usato una listbox collegata al campo idFungo?
Non era più facile?...forse non riesco a capire il motivo di utilizzare una combobox.
OpenOffice 3.3 su Winxp / Libreoffice 3.3.2 su Mandriva 2010.2
netsam
Messaggi: 9
Iscritto il: sabato 16 aprile 2011, 12:30

Re: Prendere ID da Combobox

Messaggio da netsam »

Rispondo prima a codicem.. uso una combo perché se ho una lista di 100 funghi che si chiamano Agaricus con la listbox dovrò premere la lettera A e poi scorrere fino a trovare quello giusto. con la combo invece scriverò le prime lettere e sarò subito o quasi alla specie desiderata. per l'altra riposta scrivo dopo anche perché uso un cellulare ed è molto scomodo.
Openoffice 3.1 su Windows Xp
codicem
Messaggi: 57
Iscritto il: venerdì 30 aprile 2010, 14:30

Re: Prendere ID da Combobox

Messaggio da codicem »

Potresti utilizzare due tasti per mandare avanti e indietro i record al quale associ la macro che ti farebbe visualizzare i dati sulla combobox.
Prova a guardare l'esempio qui che fa cambiare colore:
http://user.services.openoffice.org/it/ ... =13&t=1798
OpenOffice 3.3 su Winxp / Libreoffice 3.3.2 su Mandriva 2010.2
netsam
Messaggi: 9
Iscritto il: sabato 16 aprile 2011, 12:30

Re: Prendere ID da Combobox

Messaggio da netsam »

Ho fatto come hai detto.. Funziona abbastanza bene !

Però ho due problemi:

1) Ho aggiunto un pulsante, associato alla macro "Appendi", per aggiungere record ma non funziona tanto bene, anzi non "appende" niente.

2) Nella modifica di un record già inserito il salvataggio dell ID deve essere fatto due volte e con il focus prima su un controllo del formulario principale e poi su un controllo del formulario secondario, NON CAPISCO!!

Allego tutto, se qualcuno può aiutarmi ?? :(



codicem ha scritto:Potresti utilizzare due tasti per mandare avanti e indietro i record al quale associ la macro che ti farebbe visualizzare i dati sulla combobox.
Prova a guardare l'esempio qui che fa cambiare colore:
http://user.services.openoffice.org/it/ ... =13&t=1798
Allegati
Erbario Test.odb
(123.38 KiB) Scaricato 256 volte
Openoffice 3.1 su Windows Xp
netsam
Messaggi: 9
Iscritto il: sabato 16 aprile 2011, 12:30

Re: [RISOLTO] Prendere ID da Combobox

Messaggio da netsam »

Dopo settimane di lavoro sono ritornato alla prima versione del formulario, quello con la ListBox invece della ComboBox. Questo perchè ho scoperto che premendo in sequenza le lettere che compongono il nome della Specie sulla ListBox mi avvicino sempre di più al record che voglio trovare.

Niente di grave aver lavorato due mesi su 4 macro, (almeno adesso ne so qualcosa in più) !!

Grazie a tutto il forum. :D :D
Openoffice 3.1 su Windows Xp
eri
Messaggi: 1
Iscritto il: mercoledì 16 maggio 2012, 17:21

Re: [RISOLTO] Prendere ID da Combobox

Messaggio da eri »

netsam ha scritto:Dopo settimane di lavoro sono ritornato alla prima versione del formulario, quello con la ListBox invece della ComboBox. Questo perchè ho scoperto che premendo in sequenza le lettere che compongono il nome della Specie sulla ListBox mi avvicino sempre di più al record che voglio trovare.

Niente di grave aver lavorato due mesi su 4 macro, (almeno adesso ne so qualcosa in più) !!

Grazie a tutto il forum. :D :D
Se non chiedo tropo puoi allegare una copia del progetto finale?

Grazie in anticipo
Eri
OpenOffice 3.4 su Windows 7
Rispondi