[RISOLTO] Macro per recuperare campo data da una vista
[RISOLTO] Macro per recuperare campo data da una vista
Salve,
mi riferisco all'ultimo post viewtopic.php?f=13&t=7840
Soltanto che qui c'è qualche complicazione in più.
Le tabelle sono 3 in relazione tra loro con chiavi.
Dal formulario un pulsante attiva una macro che esegue una select non su una tabella ma su una vista, recuperando
un insieme di date.
La vista c'è proprio perché il database è "denormalizzato"
Il problema è quello di gestire poi queste date, per il momento sarebbe sufficiente visualizzarle in output.
In realtà va in errore ed è lo stesso errore che si verifica nel caso reale:
Errore di runtime BASIC.
Si è verificata un'eccezione
Type: com.sun.star.container.NoSuchElementException
Message: Non esiste alcun elemento denominato 'data ordine'..
Non riesco a capire perché mi dice che non esiste alcun elemento. Con la tabella funzionava, non capisco se è un problema di Vista
Grazie
mi riferisco all'ultimo post viewtopic.php?f=13&t=7840
Soltanto che qui c'è qualche complicazione in più.
Le tabelle sono 3 in relazione tra loro con chiavi.
Dal formulario un pulsante attiva una macro che esegue una select non su una tabella ma su una vista, recuperando
un insieme di date.
La vista c'è proprio perché il database è "denormalizzato"
Il problema è quello di gestire poi queste date, per il momento sarebbe sufficiente visualizzarle in output.
In realtà va in errore ed è lo stesso errore che si verifica nel caso reale:
Errore di runtime BASIC.
Si è verificata un'eccezione
Type: com.sun.star.container.NoSuchElementException
Message: Non esiste alcun elemento denominato 'data ordine'..
Non riesco a capire perché mi dice che non esiste alcun elemento. Con la tabella funzionava, non capisco se è un problema di Vista
Grazie
- Allegati
-
- Esempio con data.odb
- (15.76 KiB) Scaricato 182 volte
Ultima modifica di CarloIT il lunedì 7 novembre 2016, 17:48, modificato 1 volta in totale.
LibreOffice 5.1.4.2
Windows 7 Enterprise
Windows 7 Enterprise
Re: Macro per recuperare campo data da una select su vista
Ciao
Premesso che non sono un esperto di macro...
Il formulario lo hai creato in base a quali dati? perché se vado in modifica formulario e poi vado nelle proprietà modulo noto che nella sezione dati c'è:
Tipo di contenuto: Tabella
Contenuto: Tabella nomi
ora, nella tabella nomi non c'è nessun campo data... forse è per quello? forse va selezionata Vista dati anziché Tabella nomi?
inoltre voglio darti un consiglio:
nella tabella Ordinativi hai creato un campo con il nome "data ordine" (che poi dovrebbe essere il campo "incriminato"), sarebbe meglio se lo modificassi ad esempio in "data_ordine" cioè eliminando lo spazio tra "data" e "ordine".
Paolo
Premesso che non sono un esperto di macro...
Il formulario lo hai creato in base a quali dati? perché se vado in modifica formulario e poi vado nelle proprietà modulo noto che nella sezione dati c'è:
Tipo di contenuto: Tabella
Contenuto: Tabella nomi
ora, nella tabella nomi non c'è nessun campo data... forse è per quello? forse va selezionata Vista dati anziché Tabella nomi?
inoltre voglio darti un consiglio:
nella tabella Ordinativi hai creato un campo con il nome "data ordine" (che poi dovrebbe essere il campo "incriminato"), sarebbe meglio se lo modificassi ad esempio in "data_ordine" cioè eliminando lo spazio tra "data" e "ordine".
Paolo
OOo 4.1.1 su Windows Vista
Re: Macro per recuperare campo data da una select su vista
Prova in questo modo
il valore non va recuperato usando la proprietà columns in quanto nella tabella non esiste quel campo ma va recuperato direttamente dal valore presente sul campodata
Codice: Seleziona tutto
Sub ProvaQuery (oEvent As Object) 'Button > Execute > event
DIM Data AS Long
oForm = oEvent.Source.Model.Parent 'MainForm from Button
oStatement = oForm.ActiveConnection.createStatement() 'Create an SQL statement object
sSQL = "Select ""ID_NOME"", ""data ordine"" from ""Vista Stati"" Where ""Stato"" = 'annullato' "
oResult = oStatement.executeQuery(sSQL)
if oResult.next = True Then
while oResult.next
IDnome = oResult.Columns.getByName("ID_NOME").int
Data = oForm.getByName("data").CurrentValue
msgbox Data
wend
Else
oForm.reload() 'continua senza fare nulla
End If
End Sub
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Macro per recuperare campo data da una select su vista
Ciao a tutti,
Grazie ad entrambi per i suggerimenti:
ho modificato un pò l'esempio integrando le soluzioni suggerite:
Il formulario punta direttamente sulla vista.
"data ordine" è diventato "data_ordine" (sgombriamo il campo da dubbi su spazi etc... )
cambiato codice con il metodo CurrentValue.
Dà sempre un messaggio di errore, anche se diverso
"Errore di runtime BASIC.
Valore per la proprietà errato"
Da notare che se commento l'istruzione
La routine funziona e mi dà correttamente ad esempio gli ID_nome. quindi il problema sembra proprio essere sul campo data....
Grazie
Grazie ad entrambi per i suggerimenti:
ho modificato un pò l'esempio integrando le soluzioni suggerite:
Il formulario punta direttamente sulla vista.
"data ordine" è diventato "data_ordine" (sgombriamo il campo da dubbi su spazi etc... )
cambiato codice con il metodo CurrentValue.
Dà sempre un messaggio di errore, anche se diverso
"Errore di runtime BASIC.
Valore per la proprietà errato"
Da notare che se commento l'istruzione
Codice: Seleziona tutto
Data = oForm.getByName("data_ordine").CurrentValue
Grazie
- Allegati
-
- Esempio con data 1.0.odb
- (16.13 KiB) Scaricato 163 volte
LibreOffice 5.1.4.2
Windows 7 Enterprise
Windows 7 Enterprise
Re: Macro per recuperare campo data da una select su vista
Non devi fare un mix delle soluzioni proposte, la macro che ti ho postato va usata senza aver fatto nessuna modifica, devi usarla sul tuo primo file
Come detto prima legge il dato dal campodata presente sul formulario e non dai campi presenti nelle tabelle.
Come detto prima legge il dato dal campodata presente sul formulario e non dai campi presenti nelle tabelle.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Macro per recuperare campo data da una select su vista
ciao,
ho provato a modificare l'esempio originale.
errore è il seguente in allegato.
Grazie
ho provato a modificare l'esempio originale.
errore è il seguente in allegato.
Grazie
LibreOffice 5.1.4.2
Windows 7 Enterprise
Windows 7 Enterprise
Re: Macro per recuperare campo data da una select su vista
Io uso solo Openoffice e dimentico sempre che su LibreOffice dalla versione 4.1.1 i campi data vengono trattati diversamente, da questa versione libreoffice restituisce una struttura dati da estrapolare (giorno, mese, anno)
Ho cambiato la macro facendo in modo che funzioni sia con Libreoffice che con Openoffice.
Ho cambiato la macro facendo in modo che funzioni sia con Libreoffice che con Openoffice.
- Allegati
-
- Esempio con data.odb
- (15.88 KiB) Scaricato 190 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Macro per recuperare campo data da una select su vista
Ok, l'esempio funziona. Il problema però è che a me serve un controllo sulla data selezionata da una vista e non da un formulario.
Faccio il seguente esempio. Supponiamo che abbia una tabella nomi ed una tabella ordinativi.
La tabella nomi viene continuamente aggiornata (inserimento cancellazione etc.)
Anche la tabella ordinativi viene continuamente aggiornata con nuove date aggiunta di ordinativi e cambiamento di stato.
A me serve un controllo su tutti gli ordinativi (per esempio) in stato annullato, per verificare se la data di ogni ordinativo annullato sia inferiore o superiore ad una certa data x. Ovviamente non posso usare un formulario, devo estrarre i dati da una vista dinamica.
In parole semplici a me servirebbe la stessa gestione che viene fatta sull'ID_NOME per esempio, anche sulla data .
Grazie ancora della pazienza e disponibilità
Faccio il seguente esempio. Supponiamo che abbia una tabella nomi ed una tabella ordinativi.
La tabella nomi viene continuamente aggiornata (inserimento cancellazione etc.)
Anche la tabella ordinativi viene continuamente aggiornata con nuove date aggiunta di ordinativi e cambiamento di stato.
A me serve un controllo su tutti gli ordinativi (per esempio) in stato annullato, per verificare se la data di ogni ordinativo annullato sia inferiore o superiore ad una certa data x. Ovviamente non posso usare un formulario, devo estrarre i dati da una vista dinamica.
In parole semplici a me servirebbe la stessa gestione che viene fatta sull'ID_NOME per esempio, anche sulla data .
Grazie ancora della pazienza e disponibilità
LibreOffice 5.1.4.2
Windows 7 Enterprise
Windows 7 Enterprise
Re: Macro per recuperare campo data da una select su vista
CarloIT ha scritto: In parole semplici a me servirebbe la stessa gestione che viene fatta sull'ID_NOME per esempio, anche sulla data .
Codice: Seleziona tutto
data = oResult.Columns.getByName("data ordine").string
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
[RISOLTO] Macro per recuperare campo data da una select su v
Funziona.
PS
Un pò di confusione con la gestione date. Nel caso di un formulario la data la prendo con l'istruzione
Se la devo prendere dalla select metodo
Grazie 1000
PS
Un pò di confusione con la gestione date. Nel caso di un formulario la data la prendo con l'istruzione
Codice: Seleziona tutto
Ctrl = oForm.getByName("data")
xxx = Ctrl.currentvalue etc
Codice: Seleziona tutto
oResult.Columns.getByName("data").string
LibreOffice 5.1.4.2
Windows 7 Enterprise
Windows 7 Enterprise