Problema compilazione campi automatica con macro
Problema compilazione campi automatica con macro
Ciao a tutti,
ho ripreso a lavorare su un progetto iniziato a inizio anno e poi abbandonato per 1000 motivi. Nel frattempo ho anche perso dimestichezza con BASE
Premetto che ho cercato per un sacco di tempo di risolvere la cosa ma ho trovato sempre soluzioni diverse, che non mi hanno aiutato a sistemare.
Allego una versione semplificada del mio DB, ci sono due tabelle, una clienti e una chiamata DAM. Quest'ultima ha un formulario, che devo poi stampare, ma che ovviamente mi deve permettere di salvare i dati. Nel formulario ho inserito una casella di riepilogo che pesca dalla tabella clienti, mi visualizza Cognome e Nome del cliente e mi salva poi nel campo collegato l'ID cliente. Quello che non riesco a fare è far compilare i campi CognomeResponsabile e NomeResponsabile in base alla selezione fatta.
Ho provato trasformando i due campi in caselle di riepilogo, ma poi se imposto il contenuto come SQL e imposto l'elenco per visualizzare solo il dato che abbia corrispondenza con l'ID_CLI selezionato non funziona. Immagino sia perchè non avendo ancora salvato il FORM, l'informazione ID_CLI non è ancora disponibile per poterla usare per eseguire il WHERE...sbaglio? Quindi direi che ho preso il problema nel modo sbagliato...come risolvere?
In pratica...io vorrei selezionare il cliente dalla tendina in alto e vedere comilati i campi sottostanti automaticamente.
Qualcuno mi da qualche dritta?
Grazie 1000
ho ripreso a lavorare su un progetto iniziato a inizio anno e poi abbandonato per 1000 motivi. Nel frattempo ho anche perso dimestichezza con BASE
Premetto che ho cercato per un sacco di tempo di risolvere la cosa ma ho trovato sempre soluzioni diverse, che non mi hanno aiutato a sistemare.
Allego una versione semplificada del mio DB, ci sono due tabelle, una clienti e una chiamata DAM. Quest'ultima ha un formulario, che devo poi stampare, ma che ovviamente mi deve permettere di salvare i dati. Nel formulario ho inserito una casella di riepilogo che pesca dalla tabella clienti, mi visualizza Cognome e Nome del cliente e mi salva poi nel campo collegato l'ID cliente. Quello che non riesco a fare è far compilare i campi CognomeResponsabile e NomeResponsabile in base alla selezione fatta.
Ho provato trasformando i due campi in caselle di riepilogo, ma poi se imposto il contenuto come SQL e imposto l'elenco per visualizzare solo il dato che abbia corrispondenza con l'ID_CLI selezionato non funziona. Immagino sia perchè non avendo ancora salvato il FORM, l'informazione ID_CLI non è ancora disponibile per poterla usare per eseguire il WHERE...sbaglio? Quindi direi che ho preso il problema nel modo sbagliato...come risolvere?
In pratica...io vorrei selezionare il cliente dalla tendina in alto e vedere comilati i campi sottostanti automaticamente.
Qualcuno mi da qualche dritta?
Grazie 1000
- Allegati
-
- Zago.odb
- (28.49 KiB) Scaricato 286 volte
Ultima modifica di Zago_87 il martedì 5 gennaio 2016, 20:53, modificato 1 volta in totale.
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
Ciao, secondo me devi chiarire cosa ti serve la tabella DAM.
Il formulario funziona, ma i dati devi scriverli manualmente.
Il formulario funziona, ma i dati devi scriverli manualmente.
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Problema compilazione campi automatica
Scusate il ritardo ma non avevo visto la risposta e nel frattempo ho fatto 1000 modifiche al database...
Avevo risolto il mio problema, nel senso che selezionando da casella di riepilogo il cliente e aggiornando poi il formulario, visualizzavo sugli altri campi le informazioni che volevo...
Ho scoperto però che è molto meglio ottenere questi collegamenti tramite ricerche mirate, sbaglio?
Ho reimpostato quindi tutto e sto per ultimare, in pratica vorrei ottenere un formulario che:
- mi permetta di selezionare un filtro per la mia query
- visualizzi i dati ottenuti con il filtro
- mi permetta di salvare altri campi in una tabella (dove non opera la query)
Infine devo stampare un modulo che è l'unione del risultato filtrato e dei dati inseriti nel precedente formulario.
Teoricamente ci sono?
Appena sono arrivato a un punto magari allego qualcosa.
Grazie intanto!
Avevo risolto il mio problema, nel senso che selezionando da casella di riepilogo il cliente e aggiornando poi il formulario, visualizzavo sugli altri campi le informazioni che volevo...
Ho scoperto però che è molto meglio ottenere questi collegamenti tramite ricerche mirate, sbaglio?
Ho reimpostato quindi tutto e sto per ultimare, in pratica vorrei ottenere un formulario che:
- mi permetta di selezionare un filtro per la mia query
- visualizzi i dati ottenuti con il filtro
- mi permetta di salvare altri campi in una tabella (dove non opera la query)
Infine devo stampare un modulo che è l'unione del risultato filtrato e dei dati inseriti nel precedente formulario.
Teoricamente ci sono?
Appena sono arrivato a un punto magari allego qualcosa.
Grazie intanto!
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
Ci sto ancora lavorando, mi confermate che la strada presa è percorribile?
Grazie 1000
Grazie 1000
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
Difficile risponderti, ci vorrebbe il database ...
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Problema compilazione campi automatica
Allego il file (molto semplificato) al quale sono arrivato, riepilogo le funzioni:
1- Inserisco Responsabili, Impianti e Generatori tramite formulari (in questa versione eliminati per questioni di dimensione file)
2- Tramite il form di ricerca individuo la combinazione di dati che mi interessa e la seleziono
A questo punto devo compilare un modello che poi devo stampare, nel quale compaiono parte dei dati che ho nelle 3 tabelle sopra e altri dati da inserire al momento. Quello che mi servirebbe è aggiungere un pulsante sotto la ricerca che mi permetta di accedere al form per il modello e che mi inserisca i dati prelevati dalla selezione fatta in precedenza, in sostanza i 3 ID.
Spero di essere stato chiaro...a quest'ora comincio a disconnettere il cervello
Ovviamente sono ben accette idee differenti per risolvere la questione in maniera più "pulita", sono nuovo come utilizzo dei DB.
Considerate anche che chi lo utilizzerà è zero con il pc...l'idea di aprire la finestra di ricerca dal quale accedere ai vari modelli (a lavoro ultimato sono diversi) mi sembrava la migliore dalle varie ricerche in rete.
Grazie 1000
1- Inserisco Responsabili, Impianti e Generatori tramite formulari (in questa versione eliminati per questioni di dimensione file)
2- Tramite il form di ricerca individuo la combinazione di dati che mi interessa e la seleziono
A questo punto devo compilare un modello che poi devo stampare, nel quale compaiono parte dei dati che ho nelle 3 tabelle sopra e altri dati da inserire al momento. Quello che mi servirebbe è aggiungere un pulsante sotto la ricerca che mi permetta di accedere al form per il modello e che mi inserisca i dati prelevati dalla selezione fatta in precedenza, in sostanza i 3 ID.
Spero di essere stato chiaro...a quest'ora comincio a disconnettere il cervello
Ovviamente sono ben accette idee differenti per risolvere la questione in maniera più "pulita", sono nuovo come utilizzo dei DB.
Considerate anche che chi lo utilizzerà è zero con il pc...l'idea di aprire la finestra di ricerca dal quale accedere ai vari modelli (a lavoro ultimato sono diversi) mi sembrava la migliore dalle varie ricerche in rete.
Grazie 1000
- Allegati
-
- Prova.zip
- (240.89 KiB) Scaricato 258 volte
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
Studiando altri esempi in rete ho creato il pulsante per aprire il form che mi interessa nel frattempo, ma non era questo il mio problema principale, avevo già letto in merito.
Resta il problema di aprire il form in inserimento nuovo dato, passando i valori in base alla selezione fatta precedentemente.
Il file sta diventando grande lo posterò con Dropbox, non so se nel frattempo qualcuno sta lavorando sul precedente...
Grazie ancora
Resta il problema di aprire il form in inserimento nuovo dato, passando i valori in base alla selezione fatta precedentemente.
Il file sta diventando grande lo posterò con Dropbox, non so se nel frattempo qualcuno sta lavorando sul precedente...
Grazie ancora
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
Appena inviato il file alla casella di posta elettronica del Forum, Oggetto: Allegato Topic 7241
Grazie 1000 a chiunque perda un po' di tempo per aiutarmi
Grazie 1000 a chiunque perda un po' di tempo per aiutarmi
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
Ciao, se rinunci alle macro ti propongo di costruire un formulario di ricerca sul tuo database che funzioni come questo esempio (elaborato non tanto tempo fa per un altro utente del forum).
- Allegati
-
- Filtraggio con ListBox.odb
- (22.9 KiB) Scaricato 307 volte
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Problema compilazione campi automatica
Grazie intanto per la risposta.
Il problema della ricerca, come detto sopra è stato risolto, nel mio DB è già funzionante (anche se usando le macro). Ho una grandissima mole di dati e usare delle caselle di riepilogo sarebbe un po' complicato a mio parere, mi trovo bene con la soluzione che ho ora, che è una ricerca libera.
Il mio problema è che dalla tabella sotto, che visualizza i risultati della ricerca, non riesco a trasferire alcun dato altrove. In pratica:
- col filtro faccio una scrematura dei clienti
- talla tabella seleziono la riga del cliente che mi interessa
- con un pulsante devo aprire un altro formulario per fare la bolla a quel cliente, che ovviamente contenga già alcuni dati in base alla selezione
Ci sono tanti esempi simili in giro, ma diversamente ad altre situazioni, non riesco ad applicarli al mio DB.
Come si richiamano dei campi di una tabella? Mi va bene con o senza macro...basta che funziona
Il problema della ricerca, come detto sopra è stato risolto, nel mio DB è già funzionante (anche se usando le macro). Ho una grandissima mole di dati e usare delle caselle di riepilogo sarebbe un po' complicato a mio parere, mi trovo bene con la soluzione che ho ora, che è una ricerca libera.
Il mio problema è che dalla tabella sotto, che visualizza i risultati della ricerca, non riesco a trasferire alcun dato altrove. In pratica:
- col filtro faccio una scrematura dei clienti
- talla tabella seleziono la riga del cliente che mi interessa
- con un pulsante devo aprire un altro formulario per fare la bolla a quel cliente, che ovviamente contenga già alcuni dati in base alla selezione
Ci sono tanti esempi simili in giro, ma diversamente ad altre situazioni, non riesco ad applicarli al mio DB.
Come si richiamano dei campi di una tabella? Mi va bene con o senza macro...basta che funziona
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
In questo caso vedi se puoi utilizzare la macro contenuta in questo file trovato sul forum e messo "gelosamente" da parte da diverso tempo.
- Allegati
-
- Stampa_Record_Corrente.odb
- (32.24 KiB) Scaricato 309 volte
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Problema compilazione campi automatica
Sinceramente l'avevo già adocchiata ma non riesco ad usarla, mi spiego meglio.
Il tuo esempio lavora su una tabella, il mio su un comando SQL, che pesca i dati da una Query, non so se possa essere un problema.
Provando ad analizzare la macro non capisco a cosa serve e come è gestita la tabella di collegamento, io ho dei dati da selezionare e copiare, a cosa mi serve una tabella intermedia?
Magari sono domande stupide ma non riesco proprio ad andare avanti
Il tuo esempio lavora su una tabella, il mio su un comando SQL, che pesca i dati da una Query, non so se possa essere un problema.
Provando ad analizzare la macro non capisco a cosa serve e come è gestita la tabella di collegamento, io ho dei dati da selezionare e copiare, a cosa mi serve una tabella intermedia?
Magari sono domande stupide ma non riesco proprio ad andare avanti
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
allora una idea può venire conZago_87 ha scritto:Sinceramente l'avevo già adocchiata ma non riesco ad usarla, mi spiego meglio.
Il tuo esempio lavora su una tabella, il mio su un comando SQL, che pesca i dati da una Query, non so se possa essere un problema.
trasforma query in vista (una tabella da query)
lavora su vista
p.s. solo una risposta veloce
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: Problema compilazione campi automatica
Ok, è una funzione che non conoscevo, in pratica posso creare una vera e propria tabella in base ad una query.
Ora dovrei poterla usare come tabella di collegamento immagino, ci provo ma non so che ne esce fuori, come dicevo quella macro non l'ho capita molto...
Grazie per la dritta intanto!
*edit
Mmm...mi sa che ho detto una cavolata.
La tabella di collegamento deve avere una unica riga, infatti vado a dichiarare l'ID sempre pari a zero.
In questa tabella devo andare a scrivere i dati in base alla selezione fatta.
Leggendo meglio penso che sia il comando LookupValue a prelevare il valore attualmente selezionato, sbaglio???
A questo punto quello che serve a me è usare questo dato non tanto per aggiornare una tabella di collegamento, ma per creare un nuovo record contenente questi dati.
Ora cerco come si da il comando di creare un nuovo record in una tabella e provo ad accodarci questa istruzione di update.
Se ho detto un sacco di cavolate fermatemi
Ora dovrei poterla usare come tabella di collegamento immagino, ci provo ma non so che ne esce fuori, come dicevo quella macro non l'ho capita molto...
Grazie per la dritta intanto!
*edit
Mmm...mi sa che ho detto una cavolata.
La tabella di collegamento deve avere una unica riga, infatti vado a dichiarare l'ID sempre pari a zero.
In questa tabella devo andare a scrivere i dati in base alla selezione fatta.
Leggendo meglio penso che sia il comando LookupValue a prelevare il valore attualmente selezionato, sbaglio???
A questo punto quello che serve a me è usare questo dato non tanto per aggiornare una tabella di collegamento, ma per creare un nuovo record contenente questi dati.
Ora cerco come si da il comando di creare un nuovo record in una tabella e provo ad accodarci questa istruzione di update.
Se ho detto un sacco di cavolate fermatemi
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
Ok, non ho proprio capito come mi possa aiutare la soluzione di creare una tabella sulla base di una query. Ho comunque scoperto una funzionalità che mi tornerà utile.
Ora ho trovato qualche pezzo di macro interessante, ma nessuna sembra fare tutto quello che chiedo, l'assemblaggio per me è quantomeno rischioso, provo ad incollarlo:
Scusate le molte ... scritte, l'errore è "Proprietà o metodo non trovati" nella riga
Eppure su un esempio che ho modificato funzionava...
Ora ho trovato qualche pezzo di macro interessante, ma nessuna sembra fare tutto quello che chiedo, l'assemblaggio per me è quantomeno rischioso, provo ad incollarlo:
Codice: Seleziona tutto
Sub NuovoRCEE
Dim Form As Object
Dim ID_Generatore As Integer
Dim FormDest As Object
Dim CampoDest As String
Dim RecordDest As String
Dim IDDest As String
Dim Statement AS Object
Form = ThisComponent.CurrentController.Frame
ID_Generatore = Form.getByName("SubForm_Grid").getByName("ID_Gen").CurrentValue REM acquisisce l'ID_Gen del record selezionato
FormDest = ThisDatabasedocument.Formdocuments.getByName("Form_RCEE")
CampoDest = "ID_Gen"
RecordDest = Form.Last
IDDest = "ID_RCEE"
FormDest.open
Statement = ParentForm.ActiveConnection.CreateStatement
MySql = "UPDATE """ & """"
MySql = MySql & " SET """ & CampoDest & "" = ID_Generatore
MySql = MySql & " WHERE """ & IDDest & "" = RecordDest
Statement.Execute(MySql)
Statement.Close
End Sub
Codice: Seleziona tutto
ID_Generatore = Form.getByName("SubForm_Grid").getByName("ID_Gen").CurrentValue
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
Nel salutare il tuo gradito ritorno attivo sul forum (non posso dimenticare che i primi passi in Base li ho compiuti con te), ti chiedo cortesemente di chiarire come fare.vladko ha scritto:trasforma query in vista (una tabella da query)
Il wizard non consente di fate viste su query, ma solo su tabelle. Sbaglio?
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Problema compilazione campi automatica
Tasto destro del mouse sulla query e poi "Crea come vista"charlie ha scritto:Il wizard non consente di fate viste su query, ma solo su tabelle. Sbaglio?
Paolo
OOo 4.1.1 su Windows Vista
Re: Problema compilazione campi automatica
Grazie , non si finisce mai di imparare.
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Problema compilazione campi automatica
grazie per un anticipobydindi ha scritto: Tasto destro del mouse sulla query e poi "Crea come vista"
Paolo
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: Problema compilazione campi automatica
Ok, io la vista l'ho creata partendo dalla ricerca, ma mi pare una semplice tabella che include i dati estrapolati...non ho capito che ci devo fare sinceramente.
Un altro piccolo suggerimento?
Un altro piccolo suggerimento?
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
Ho fatto diverse ricerche e sono riuscito ad ottenere il valore dell'ID che seleziono nella mia tabella filtrata:
Funziona perchè se aggiungo l'istruzione di stampa vedo il dato corretto (nel file allegato l'ho lasciata).
Ora però non riesco proprio ad usarlo per filtrare il mio report, ho inserito il codice trovato altrove ma l'esempio era troppo complesso e non sono riuscito ad adattarlo.
Il massimo sarebbe poter accedere al Form_Responsabili tramite la macro associata al pulsante, che filtri visualizzando il solo dato selezionato e che abiliti la modifica e l'annullamento dati. In questo modo posso lasciare il formulario soltanto come inserimento dati se aperto "normalmente" ma come modifica annullamento se seleziono prima il dato da lavorare.
Spero di essere stato chiaro e come sempre grazie 1000...man mano vedrete che non rompo più e riesco anche io ad aiutare qualcuno
Codice: Seleziona tutto
Sub Form_Responsabili
Dim Form, SubForm, SubFormGrid, ID As Object
Form = thiscomponent.drawpage.forms.getbyname("MainForm")
SubForm = Form.getbyname("SubForm")
SubFormGrid = SubForm.getbyname("SubForm_Grid")
ID = SubFormGrid.GetByName("ID_Res")
End Sub
Ora però non riesco proprio ad usarlo per filtrare il mio report, ho inserito il codice trovato altrove ma l'esempio era troppo complesso e non sono riuscito ad adattarlo.
Il massimo sarebbe poter accedere al Form_Responsabili tramite la macro associata al pulsante, che filtri visualizzando il solo dato selezionato e che abiliti la modifica e l'annullamento dati. In questo modo posso lasciare il formulario soltanto come inserimento dati se aperto "normalmente" ma come modifica annullamento se seleziono prima il dato da lavorare.
Spero di essere stato chiaro e come sempre grazie 1000...man mano vedrete che non rompo più e riesco anche io ad aiutare qualcuno
- Allegati
-
- Prova2.odb
- (44.41 KiB) Scaricato 179 volte
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
Ok l'ennesima notte insonne ha dato i suoi frutti:
L'errore, magari torna utile a chi come me prova a smanettare e sbaglia, era:
In pratica inon avevo prelevato il valore ma l'intera colonna (o qualcosa del genere ), dopo aver aggiunto ".CurrentValue" si è sistemato tutto
Codice: Seleziona tutto
Sub Form_Responsabili (Event As Variant)
Dim Form, FormDes, FormFil, SubForm, SubFormGrid As Object
Form = ThisComponent.DrawPage.Forms.GetByName("MainForm")
SubForm = Form.GetByName("SubForm")
SubFormGrid = SubForm.GetByName("SubForm_Grid")
ID = SubFormGrid.GetByName("ID_Res").CurrentValue
FormDes = ThisDatabaseDocument.FormDocuments.GetByName("Form_Responsabili")
FormDes.Open
FormFil = FormDes.Component.DrawPage.Forms.GetByIndex(0)
FormFil.Filter = ("ID_Res = " & ID )
FormFil.ApplyFilter = True
FormFil.Reload()
End Sub
Codice: Seleziona tutto
Colonna non trovata: RES00009 in statement [SELECT * FROM "Tab_Responsabili" WHERE "ID_Res" = "RES00009"]
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
Guardando bene ho un po' divagato...questo non era proprio la compilazione automatica ma un filtro dati
Pensavo che alla fine fosse la stessa cosa, una volta ottenuti i valori che mi interessavano dalla tabella, invece no, non riesco a scriverli!
Allego il file attuale, dalla solita tabella di ricerca prelevo i 3 ID che mi servono per compilare il formulario "Form_Modello", ma la macro si pianta quando vado a scriverli.
Per capire l'errore ho creato un pulsante nel formulario di destinazione, con le stesse istruzioni che uso nalla macro e funziona
Ora...dove sta l'errore?
Pensavo che alla fine fosse la stessa cosa, una volta ottenuti i valori che mi interessavano dalla tabella, invece no, non riesco a scriverli!
Allego il file attuale, dalla solita tabella di ricerca prelevo i 3 ID che mi servono per compilare il formulario "Form_Modello", ma la macro si pianta quando vado a scriverli.
Per capire l'errore ho creato un pulsante nel formulario di destinazione, con le stesse istruzioni che uso nalla macro e funziona
Ora...dove sta l'errore?
- Allegati
-
- Prova3.odb
- (53.5 KiB) Scaricato 199 volte
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
un aiuto da uno che non conosce macro:
1 dichiarare tutto
2 Thiscomponent = VisibileComponente (Form_RicercaPrincipale)
3 NomeDichiarato.Component =DichiaratoComponente (Form_Modulo)
Vladi_Macro
come fare:
1 dichiarare tutto =Dim Form, FormDes,
3 3 NomeDichiarato.Component =FormDes.Component.
p.s. non conosco macro ma il mio pensiero viene da dire che anche altri problemi da verificare
1 dichiarare tutto
2 Thiscomponent = VisibileComponente (Form_RicercaPrincipale)
3 NomeDichiarato.Component =DichiaratoComponente (Form_Modulo)
Certo!! sua ricerca di fmtID_Res in Thiscomponent = VisibileComponente --> (Form_RicercaPrincipale)Zago_87 ha scritto:....
Allego il file attuale, dalla solita tabella di ricerca prelevo i 3 ID che mi servono per compilare il formulario "Form_Modello", ma la macro si pianta quando vado a scriverli.
Codice: Seleziona tutto
ID_Res = ThisComponent.DrawPage.Forms.getByName("MainForm").GetByName("fmtID_Res")
Certo!! sua ricerca è in Thiscomponent = VisibileComponente (Form_Modulo)Zago_87 ha scritto:Per capire l'errore ho creato un pulsante nel formulario di destinazione, con le stesse istruzioni che uso nalla macro e funziona
Zago_MacroZago_87 ha scritto:Ora...dove sta l'errore?
Codice: Seleziona tutto
Sub Form_Modulo
Dim Form, Form2, Form3, SubForm, SubFormGrid, ID_Res As Object
Dim ID1 As String
Form = ThisComponent.DrawPage.Forms.GetByName("MainForm")
SubForm = Form.GetByName("SubForm")
SubFormGrid = SubForm.GetByName("SubForm_Grid")
ID1 = SubFormGrid.GetByName("ID_Res").CurrentValue
ID2 = SubFormGrid.GetByName("ID_Imp").CurrentValue
ID3 = SubFormGrid.GetByName("ID_Gen").CurrentValue
FormDes = ThisDatabaseDocument.FormDocuments.GetByName("Form_Modulo")
FormDes.Open
Wait 1000
ID_Res = ThisComponent.DrawPage.Forms.getByName("MainForm").GetByName("fmtID_Res")
ID_Res.text = ID1
End Sub
Codice: Seleziona tutto
Sub Form_Modulo
Dim Form, FormDes,Form2, Form3, SubForm, SubFormGrid, ID_Res As Object
Dim ID1 As String
Form = ThisComponent.DrawPage.Forms.GetByName("MainForm")
SubForm = Form.GetByName("SubForm")
SubFormGrid = SubForm.GetByName("SubForm_Grid")
ID1 = SubFormGrid.GetByName("ID_Res").CurrentValue
ID2 = SubFormGrid.GetByName("ID_Imp").CurrentValue
ID3 = SubFormGrid.GetByName("ID_Gen").CurrentValue
FormDes = ThisDatabaseDocument.FormDocuments.GetByName("Form_Modulo")
FormDes.Open
Wait 1000
ID_Res = FormDes.Component.DrawPage.Forms.getByName("MainForm").GetByName("fmtID_Res")
ID_Res.text = ID1
End Sub
1 dichiarare tutto =Dim Form, FormDes,
3 3 NomeDichiarato.Component =FormDes.Component.
p.s. non conosco macro ma il mio pensiero viene da dire che anche altri problemi da verificare
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: Problema compilazione campi automatica
Quando si fa tardi bisogna dormire...
Gli errori nelle dichiarazioni sono di distrazione, ma la tua correzione non l'ho capita del tutto.
Nella prima parte leggo il valore e uso "This", facendo riferimento al documento aperto in quel momento, la ricerca principale. Giusto?
Nella seconda parte lo vado a scrivere, ma ora sono passato su un altro documento (ho già aperto il secondo formulario), se uso ancora "This" non prendo il controllo del nuovo formulario?
In pratica una volta usato This resto puntato sul primo documento e quando ne apro altri devo per forza dichiarare il nome del nuovo documento...ho capito?
Dici sempre di non capire di macro ma per me basti e avanzi
Grazie 1000
PS: che intenti per:
Gli errori nelle dichiarazioni sono di distrazione, ma la tua correzione non l'ho capita del tutto.
Nella prima parte leggo il valore e uso "This", facendo riferimento al documento aperto in quel momento, la ricerca principale. Giusto?
Nella seconda parte lo vado a scrivere, ma ora sono passato su un altro documento (ho già aperto il secondo formulario), se uso ancora "This" non prendo il controllo del nuovo formulario?
In pratica una volta usato This resto puntato sul primo documento e quando ne apro altri devo per forza dichiarare il nome del nuovo documento...ho capito?
Dici sempre di non capire di macro ma per me basti e avanzi
Grazie 1000
PS: che intenti per:
???il mio pensiero viene da dire che anche altri problemi da verificare
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
aspetto tue domandeZago_87 ha scritto:Quando si fa tardi bisogna dormire...
Gli errori nelle dichiarazioni sono di distrazione, ma la tua correzione non l'ho capita del tutto.
il mio pensiero è non usare This ma usare nomi dichiaratiZago_87 ha scritto:Nella prima parte leggo il valore e uso "This", facendo riferimento al documento aperto in quel momento, la ricerca principale. Giusto?
Nella seconda parte lo vado a scrivere, ma ora sono passato su un altro documento (ho già aperto il secondo formulario), se uso ancora "This" non prendo il controllo del nuovo formulario?
esempio: Form1,Form2 etc come si legge da tua Macro copiata da qualche parte
si hai capito beneZago_87 ha scritto:In pratica una volta usato This resto puntato sul primo documento e quando ne apro altri devo per forza dichiarare il nome del nuovo documento...ho capito?
Macro non è per me facile. Non conosco.Zago_87 ha scritto:Dici sempre di non capire di macro ma per me basti e avanzi
Grazie 1000
PS: che intenti per:???il mio pensiero viene da dire che anche altri problemi da verificare
Ma il rumore che fa la tastiera quando scrivo tante volte stesse cose mi fa dire che c'è un problema -->perchè devo scrivere tante volte????
questo non è usare un linguaggio di programmazione ma solo copiare senza capire
Guardando le tue Macro ci sono tante volte le stesse parole. Questo per me non va bene
Fai sapere
Grazie
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: Problema compilazione campi automatica
Ah ok, capisco cosa intendi, quel file è quello con coi faccio i test, faccio le macro a pezzi, le smonto e le rimonto (poi non funzionano ).vladko ha scritto: Ma il rumore che fa la tastiera quando scrivo tante volte stesse cose mi fa dire che c'è un problema -->perchè devo scrivere tante volte????
questo non è usare un linguaggio di programmazione ma solo copiare senza capire
Guardando le tue Macro ci sono tante volte le stesse parole. Questo per me non va bene
Fai sapere
Grazie
Comunque è vero che alcune cose che scrivo sono copiate senza capire completamente, anche nel file definitivo. Purtroppo ho una scadenza, nel senso che mi serve il DB funzionante il prima possibile (odio la fretta, anche se una scadenza mi incentiva ad imparare velocemente).
Arrivato a una funzionalità decente lo riguarderò da capo scrivendo solo cose che capisco fino in fondo, mi interessa conoscere il linguaggio basic, non solo per saperlo copiare e incollare ma per scriverlo.
Grazie del supporto.
Posso chiedere una ulteriore cosa connessa alla domanda principale?
I dati che copio dalla tabella filtrata vanno a riempire un nuovo record, penso di avere 3 strade:
1- avere due formulari per ogni modulo, uno per il solo inserimento (quando lo apro sono già sul record vuoto), uno per la modifica/eliminazione dei moduli non corretti.
2- impostare un controllo che gestisce le proprietà "Aggiungi dati", "Modifica Dati", "Elimina dati" e "Aggiungi solo i dati", in modo da usare un solo modulo e impostarne le proprietà all'apertura, ma esiste? Non sono riuscito a trovare nulla...
3- al momento ho inserito nella macro precedente l'istruzione, che mi sembra la cosa più semplice:
Codice: Seleziona tutto
Wait 100
FormDes.Component.DrawPage.Forms.getByName("MainForm").MoveToInsertRow()
Così ho un piccolo inconveniente, i campi id li ho impostati come da digitare obbligatoriamente, nonostante vengano incollati, quando salvo mi compare l'errore come se non ci fosse scritto nulla. Se tolgo il controllo di digitazione funziona tutto bene...
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica
una domanda che adesso non so rispondere ma spero altri che a leggere qui avranno una risposta.
anche se credo di avere visto da qualche parte qualcosa
anche se credo di avere visto da qualche parte qualcosa
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: Problema compilazione campi automatica
Pensavo di aver risolto...
In realtà non è sufficiente "incollare" il valore nella casella di testo, ma va aggiornata. Ho risolto quasi definitivamente con un Commit = True
Il piccolo problema è che sono riuscito a farlo funzionare solamente impostando i campi del formulario di destinazione come caselle di testo e non come caselle formattate. Non che mi cambi il mondo ma volevo capire perchè.
La copia dati dovrebbe essere meglio eseguirla tra caselle dello stesso tipo, la provenienza è un valore INTEGER salvata in un campo formattato (aggiungo un prefisso al contatore per chiarezza) e la destinazione è un campo formattato allo stesso modo. Nel mio caso lo copio considerandolo come testo e lo devo quindi incollare come testo. Ho provato a dichiararlo come Integer ma non so come modificare poi questa linea:In pratica la casella formattata non ammette il .text, ma allora cosa ci va??? Possibile che non ho trovato nulla cercando?
Ho modificato il titolo aggiungendo macro, così magari qualcuno ci capita (anche se secondo me Vladko mi sa aiutare )
Le estensioni MRI o XRAY mi possono aiutare in questo? Quale delle due mi consigliate? Vorrei partire da una...due in un colpo è troppa roba
In realtà non è sufficiente "incollare" il valore nella casella di testo, ma va aggiornata. Ho risolto quasi definitivamente con un Commit = True
Il piccolo problema è che sono riuscito a farlo funzionare solamente impostando i campi del formulario di destinazione come caselle di testo e non come caselle formattate. Non che mi cambi il mondo ma volevo capire perchè.
La copia dati dovrebbe essere meglio eseguirla tra caselle dello stesso tipo, la provenienza è un valore INTEGER salvata in un campo formattato (aggiungo un prefisso al contatore per chiarezza) e la destinazione è un campo formattato allo stesso modo. Nel mio caso lo copio considerandolo come testo e lo devo quindi incollare come testo. Ho provato a dichiararlo come Integer ma non so come modificare poi questa linea:
Codice: Seleziona tutto
ID_Res.text = ID1
Ho modificato il titolo aggiungendo macro, così magari qualcuno ci capita (anche se secondo me Vladko mi sa aiutare )
Le estensioni MRI o XRAY mi possono aiutare in questo? Quale delle due mi consigliate? Vorrei partire da una...due in un colpo è troppa roba
LibreOffice 6.3.6
Windows 7 PRO
Windows 7 PRO
Re: Problema compilazione campi automatica con macro
una momento
cambia procedura:
con macro prendi id da Form Ricerca
scrivi su Tab_Modulo
carica Form Modulo aggiornato
cambia procedura:
con macro prendi id da Form Ricerca
scrivi su Tab_Modulo
carica Form Modulo aggiornato
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