[RISOLTO] Prendere ID da Combobox
[RISOLTO] Prendere ID da Combobox
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
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
-
- Messaggi: 62
- Iscritto il: lunedì 21 febbraio 2011, 7:00
Re: Prendere ID da Combobox
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
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)'
spero di esserti utile e soprattutto che qualcun altro trovi soluzioni più immediate perchè riconosco che la mia è un pò 'contorta'
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
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
ciao
open office 3.2.1
window 7
window 7
Re: Prendere ID da Combobox
può andare?
ricorda fare backup spesso
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
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie
Re: Prendere ID da Combobox
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
Re: Prendere ID da Combobox
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
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 252 volte
Openoffice 3.1 su Windows Xp
Re: Prendere ID da Combobox
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
-
- Messaggi: 62
- Iscritto il: lunedì 21 febbraio 2011, 7:00
Re: Prendere ID da Combobox
vedo che hai fatto un gran lavoro, complimenti
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
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
window 7
Re: Prendere ID da Combobox
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?
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
-
- Messaggi: 62
- Iscritto il: lunedì 21 febbraio 2011, 7:00
Re: Prendere ID da Combobox
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 ?
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
window 7
Re: Prendere ID da Combobox
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.
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
Re: Prendere ID da Combobox
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
Re: Prendere ID da Combobox
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
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
Re: Prendere ID da Combobox
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 ??
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 257 volte
Openoffice 3.1 su Windows Xp
Re: [RISOLTO] Prendere ID da Combobox
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.
Niente di grave aver lavorato due mesi su 4 macro, (almeno adesso ne so qualcosa in più) !!
Grazie a tutto il forum.
Openoffice 3.1 su Windows Xp
Re: [RISOLTO] Prendere ID da Combobox
Se non chiedo tropo puoi allegare una copia del progetto finale?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.
Grazie in anticipo
Eri
OpenOffice 3.4 su Windows 7