Problema compilazione campi automatica con macro

Discussioni sulle caratteristiche di database
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Problema compilazione campi automatica con macro

Messaggio da Zago_87 »

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 :crazy:
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 257 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
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8842
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Problema compilazione campi automatica

Messaggio da charlie »

Ciao, secondo me devi chiarire cosa ti serve la tabella DAM.
Il formulario funziona, ma i dati devi scriverli manualmente.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

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!
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

Ci sto ancora lavorando, mi confermate che la strada presa è percorribile?

Grazie 1000
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8842
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Problema compilazione campi automatica

Messaggio da charlie »

Difficile risponderti, ci vorrebbe il database ...
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

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 :D

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 232 volte
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

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
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

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 :)
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8842
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Problema compilazione campi automatica

Messaggio da charlie »

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 283 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

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 :D
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8842
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Problema compilazione campi automatica

Messaggio da charlie »

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 273 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

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
LibreOffice 6.3.6
Windows 7 PRO
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Problema compilazione campi automatica

Messaggio da vladko »

Zago_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.
allora una idea può venire con
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 :-)
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

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 :alarm:
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

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:

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
Scusate le molte ... scritte, l'errore è "Proprietà o metodo non trovati" nella riga

Codice: Seleziona tutto

ID_Generatore = Form.getByName("SubForm_Grid").getByName("ID_Gen").CurrentValue
Eppure su un esempio che ho modificato funzionava... :knock:
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8842
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Problema compilazione campi automatica

Messaggio da charlie »

vladko ha scritto:trasforma query in vista (una tabella da query)
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.
Il wizard non consente di fate viste su query, ma solo su tabelle. Sbaglio?
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
bydindi
Volontario
Volontario
Messaggi: 258
Iscritto il: lunedì 21 febbraio 2011, 10:16

Re: Problema compilazione campi automatica

Messaggio da bydindi »

charlie ha scritto:Il wizard non consente di fate viste su query, ma solo su tabelle. Sbaglio?
Tasto destro del mouse sulla query e poi "Crea come vista"

Paolo
OOo 4.1.1 su Windows Vista
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8842
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Problema compilazione campi automatica

Messaggio da charlie »

Grazie :super: , non si finisce mai di imparare.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Problema compilazione campi automatica

Messaggio da vladko »

bydindi ha scritto: Tasto destro del mouse sulla query e poi "Crea come vista"

Paolo
:super: grazie per un anticipo
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 :-)
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

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?
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

Ho fatto diverse ricerche e sono riuscito ad ottenere il valore dell'ID che seleziono nella mia tabella filtrata:

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
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 :D
Allegati
Prova2.odb
(44.41 KiB) Scaricato 163 volte
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

Ok l'ennesima notte insonne ha dato i suoi frutti:

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
L'errore, magari torna utile a chi come me prova a smanettare e sbaglia, era:

Codice: Seleziona tutto

Colonna non trovata: RES00009 in statement [SELECT * FROM "Tab_Responsabili" WHERE "ID_Res" = "RES00009"]
In pratica inon avevo prelevato il valore ma l'intera colonna (o qualcosa del genere :oops: ), dopo aver aggiunto ".CurrentValue" si è sistemato tutto
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

Guardando bene ho un po' divagato...questo non era proprio la compilazione automatica ma un filtro dati :knock:
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 :shock:

Ora...dove sta l'errore?
Allegati
Prova3.odb
(53.5 KiB) Scaricato 174 volte
LibreOffice 6.3.6
Windows 7 PRO
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Problema compilazione campi automatica

Messaggio da vladko »

un aiuto da uno che non conosce macro:
1 dichiarare tutto
2 Thiscomponent = VisibileComponente (Form_RicercaPrincipale)
3 NomeDichiarato.Component =DichiaratoComponente (Form_Modulo)
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.
Certo!! sua ricerca di fmtID_Res in Thiscomponent = VisibileComponente --> (Form_RicercaPrincipale)

Codice: Seleziona tutto

ID_Res = ThisComponent.DrawPage.Forms.getByName("MainForm").GetByName("fmtID_Res")
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 :shock:
Certo!! sua ricerca è in Thiscomponent = VisibileComponente (Form_Modulo)
Zago_87 ha scritto:Ora...dove sta l'errore?
Zago_Macro

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
Vladi_Macro

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
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
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 :-)
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

Quando si fa tardi bisogna dormire... :lol:
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 :super:
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
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Problema compilazione campi automatica

Messaggio da vladko »

Zago_87 ha scritto:Quando si fa tardi bisogna dormire... :lol:
Gli errori nelle dichiarazioni sono di distrazione, ma la tua correzione non l'ho capita del tutto.
aspetto tue domande :roll:
Zago_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?
il mio pensiero è non usare This ma usare nomi dichiarati
esempio: Form1,Form2 etc come si legge da tua Macro copiata da qualche parte ;)
Zago_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?
si hai capito bene :bravo:
Zago_87 ha scritto:Dici sempre di non capire di macro ma per me basti e avanzi :super:
Grazie 1000

PS: che intenti per:
il mio pensiero viene da dire che anche altri problemi da verificare
???
Macro non è per me facile. Non conosco.
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???? :knock: :)
questo non è usare un linguaggio di programmazione ma solo copiare senza capire :roll:
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 :-)
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

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???? :knock: :)
questo non è usare un linguaggio di programmazione ma solo copiare senza capire :roll:
Guardando le tue Macro ci sono tante volte le stesse parole. Questo per me non va bene
Fai sapere
Grazie
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 :D ).
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()
Funziona, ma è la strada migliore?

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... :shock:
LibreOffice 6.3.6
Windows 7 PRO
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Problema compilazione campi automatica

Messaggio da vladko »

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
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 :-)
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Problema compilazione campi automatica

Messaggio da Zago_87 »

Pensavo di aver risolto... :crazy:
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
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 :D )
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
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Problema compilazione campi automatica con macro

Messaggio da vladko »

una momento
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 :-)
Rispondi