[RISOLTO] Inserimento record specifico in documento writer
-
- Messaggi: 10
- Iscritto il: sabato 8 ottobre 2011, 18:01
[RISOLTO] Inserimento record specifico in documento writer
Ciao a tutti,
E' la prima volta che mi cimento in un progetto del genere (fino ad oggi ho sempre gestito la cosa con Visual Basic ma per una serie di motivi non ultimo il passaggio a mac os vorrei utilizzare OooBase).
La mia è quindi una domandina da neofita appena approdato a Base. Ho già letto alcune discussioni simili al mio problema ma non applicabili (vedi progetto DDT). Ho un formulario nel quale è possibile inserire un'anagrafica clienti.
Vorrei che già in fase di inserimento (senza necessità di ricercare il record quindi ma semplicemente utilizzando quello visualizzato) alla pressione di un pulsante si aprisse un documento writer popolato con i dati del record visualizzato nel formulario per poi stamparlo.
Spero di essere stato chiaro.
Ringrazio anticipatamente quanti vorranno aiutarmi ciao
E' la prima volta che mi cimento in un progetto del genere (fino ad oggi ho sempre gestito la cosa con Visual Basic ma per una serie di motivi non ultimo il passaggio a mac os vorrei utilizzare OooBase).
La mia è quindi una domandina da neofita appena approdato a Base. Ho già letto alcune discussioni simili al mio problema ma non applicabili (vedi progetto DDT). Ho un formulario nel quale è possibile inserire un'anagrafica clienti.
Vorrei che già in fase di inserimento (senza necessità di ricercare il record quindi ma semplicemente utilizzando quello visualizzato) alla pressione di un pulsante si aprisse un documento writer popolato con i dati del record visualizzato nel formulario per poi stamparlo.
Spero di essere stato chiaro.
Ringrazio anticipatamente quanti vorranno aiutarmi ciao
Ultima modifica di schwantz69 il domenica 23 ottobre 2011, 9:44, modificato 1 volta in totale.
Openoffice 3 su Mac Os 10.6.8 Leopard
- marcofoc
- Messaggi: 235
- Iscritto il: martedì 12 ottobre 2010, 16:48
- Località: Arzignano (VI)
- Contatta:
Re: Inserimento record specifico in documento writer
Mmm.... qui entrano in gioco le macro.. che non conosco.
Io un problema simile l'ho risolto così:
un file writer l'ho composto da una parte "non stampabile", fatta di tutti i campi per l'inserimento dei dati (quindi come un vero e proprio "form"),
e una parte "stampabile", che si va a prendere l'ultimo recordo inserito (quando hai finito di riempire tutti i campi, inserisci un bottone con funzione "salva record").
Ecco che, durante la compilazione del form, ho la parte stampabile con i campi tutti vuoti. Appena premo su "salva record", i campi mi si compilano e lancio la stampa.
Un'altra soluzione, se non vuoi buttare il tuo bel form già creato, è creare il file writer collegandolo alla base dati, ordinando l'estrazione dell'ultimo record inserito.
Non è un lavoro impossibile, dai.
Io un problema simile l'ho risolto così:
un file writer l'ho composto da una parte "non stampabile", fatta di tutti i campi per l'inserimento dei dati (quindi come un vero e proprio "form"),
e una parte "stampabile", che si va a prendere l'ultimo recordo inserito (quando hai finito di riempire tutti i campi, inserisci un bottone con funzione "salva record").
Ecco che, durante la compilazione del form, ho la parte stampabile con i campi tutti vuoti. Appena premo su "salva record", i campi mi si compilano e lancio la stampa.
Un'altra soluzione, se non vuoi buttare il tuo bel form già creato, è creare il file writer collegandolo alla base dati, ordinando l'estrazione dell'ultimo record inserito.
Non è un lavoro impossibile, dai.
Non esistono buoni maestri senza buoni allievi...
Re: Inserimento record specifico in documento writer
@marcofoc !!! fai un mini tutorial??
@schwantz69
di solito il procedimento per base è:
creare tabelle
creare query
creare form
creare report (c'e extension SunReport Builder che facilita la creazione)
ora io non ho ben capito cosa vuoi dire ma se ti serve una macro che apre un report per nome puoi usare questa:
http://user.services.openoffice.org/it/ ... cro+report
@schwantz69
di solito il procedimento per base è:
creare tabelle
creare query
creare form
creare report (c'e extension SunReport Builder che facilita la creazione)
ora io non ho ben capito cosa vuoi dire ma se ti serve una macro che apre un report per nome puoi usare questa:
http://user.services.openoffice.org/it/ ... cro+report
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
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Inserimento record specifico in documento writer
Soluzione interessante.marcofoc ha scritto:Mmm.... qui entrano in gioco le macro.. che non conosco.
Io un problema simile l'ho risolto così:
un file writer l'ho composto da una parte "non stampabile", fatta di tutti i campi per l'inserimento dei dati (quindi come un vero e proprio "form"),
e una parte "stampabile", che si va a prendere l'ultimo recordo inserito (quando hai finito di riempire tutti i campi, inserisci un bottone con funzione "salva record").
Ecco che, durante la compilazione del form, ho la parte stampabile con i campi tutti vuoti. Appena premo su "salva record", i campi mi si compilano e lancio la stampa.
Un'altra soluzione, se non vuoi buttare il tuo bel form già creato, è creare il file writer collegandolo alla base dati, ordinando l'estrazione dell'ultimo record inserito.
Non è un lavoro impossibile, dai.
Io ho messo il tasto salva record sul form e vicino un tasto per aprire il documento writer (anche se penso che si possa unire tutto in unico tasto, ma è necessaria una macro).
Se si ha la necessità di stampare i dati relativi all'ultimo record la tua soluzione è più pratica.
Puoi mettere un esempio? Come hai impostato il documento writer? 2 fogli affiancati dei quali il primo serve per l'inserimento dei dati?
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
-
- Messaggi: 10
- Iscritto il: sabato 8 ottobre 2011, 18:01
Re: [RISOLTO] Inserimento record specifico in documento writ
Grazie a quanti hanno proposto le varie soluzioni, alla fine ho risolto in questo modo:
ho creato una ricerca di "comodo" che vado a variare di volta in volta
nel formulario ho creato una macro che va a memorizzare il nr. del record visibile in quel momento
sempre nel formulario ho creato una macro che va a sostituire il comando SQL della ricerca
in questo modo ogni volta che premo il pulsante "Stampa" viene eseguito il filtro in ricerca per il nr. di record correntemente visualizzato.
Il problema ora è far si che il documento writer esegua l'aggiornamento del record in automatico ma per questo apro una nuova discussione nel forum di writer.
ciao a tutti
ho creato una ricerca di "comodo" che vado a variare di volta in volta
nel formulario ho creato una macro che va a memorizzare il nr. del record visibile in quel momento
sempre nel formulario ho creato una macro che va a sostituire il comando SQL della ricerca
in questo modo ogni volta che premo il pulsante "Stampa" viene eseguito il filtro in ricerca per il nr. di record correntemente visualizzato.
Il problema ora è far si che il documento writer esegua l'aggiornamento del record in automatico ma per questo apro una nuova discussione nel forum di writer.
ciao a tutti
Openoffice 3 su Mac Os 10.6.8 Leopard
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: [RISOLTO] Inserimento record specifico in documento writ
La macro che preleva il dato del record corrente interesserebbe anche me, la puoi postare in risposta in modo che sia accessibile a tutti?
Grazie
Grazie
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
-
- Messaggi: 10
- Iscritto il: sabato 8 ottobre 2011, 18:01
Re: [RISOLTO] Inserimento record specifico in documento writ
Qui di seguito riporto la macro utilizzata per modificare la stringa SQL della ricerca con il record attualmente visualizzato nel formulario:
Sub Query_Privacy(num_rec as long)
rem Sostituisce il comando SQL nella query specificata con quello definito
Ricerca=ThisDatabaseDocument.datasource.QueryDefinitions.getByName("Query_Anagrafica Clienti")
FraseSQl=Ricerca.Command
rem Quella che segue è una riga per controllare la modifica della stringa SQL
rem print "originale: "; FraseSQl
rem Inserire il comando SQL nella riga seguente
FraseSQL="SELECT * FROM ""Anagrafica Clienti"" WHERE ""ID""="+num_rec+""
Ricerca.setPropertyValue("Command",FraseSQL)
rem Quella che segue è una riga per controllare la modifica della stringa SQL
rem FraseSQl=Ricerca.Command
rem print "Dopo la modifica: "; FraseSQl
End Sub
Presuppone che alla pressione di un pulsante venga letto il parametro che interessa presente in un campo del formulario (in questo caso il numero di record) e che lo passi alla sub (num_rec) la quale si occupa di costruire la fraseSQL e di inviarla alla ricerca di comodo precedentemente creata.
Spero sia chiaro diversamente sono qui ciao
Sub Query_Privacy(num_rec as long)
rem Sostituisce il comando SQL nella query specificata con quello definito
Ricerca=ThisDatabaseDocument.datasource.QueryDefinitions.getByName("Query_Anagrafica Clienti")
FraseSQl=Ricerca.Command
rem Quella che segue è una riga per controllare la modifica della stringa SQL
rem print "originale: "; FraseSQl
rem Inserire il comando SQL nella riga seguente
FraseSQL="SELECT * FROM ""Anagrafica Clienti"" WHERE ""ID""="+num_rec+""
Ricerca.setPropertyValue("Command",FraseSQL)
rem Quella che segue è una riga per controllare la modifica della stringa SQL
rem FraseSQl=Ricerca.Command
rem print "Dopo la modifica: "; FraseSQl
End Sub
Presuppone che alla pressione di un pulsante venga letto il parametro che interessa presente in un campo del formulario (in questo caso il numero di record) e che lo passi alla sub (num_rec) la quale si occupa di costruire la fraseSQL e di inviarla alla ricerca di comodo precedentemente creata.
Spero sia chiaro diversamente sono qui ciao
Openoffice 3 su Mac Os 10.6.8 Leopard
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: [RISOLTO] Inserimento record specifico in documento writ
Appena ho 5 minuti disponibili provo e ti faccio sapere.
Grazie, ciao.
Grazie, ciao.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: [RISOLTO] Inserimento record specifico in documento writ
Credo manchi il listato della sub (num_rec) che dovrebbe essere la macro se "legge" il dato che interessa per passarlo alla ricercaschwantz69 ha scritto:... Presuppone che alla pressione di un pulsante venga letto il parametro che interessa presente in un campo del formulario (in questo caso il numero di record) e che lo passi alla sub (num_rec) la quale si occupa di costruire la fraseSQL e di inviarla alla ricerca di comodo precedentemente creata.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
Re: [RISOLTO] Inserimento record specifico in documento writ
quando ho un po di tempo guardo meglio questo problema di macro
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
-
- Messaggi: 10
- Iscritto il: sabato 8 ottobre 2011, 18:01
Re: [RISOLTO] Inserimento record specifico in documento writ
Ciao a tutti,
In realtà non sono stato molto chiaro e me ne rendo conto solo ora mi spiace.
Giustamente come affermato da Vladko la macro che manca è quella che legge il valore dal controllo, la memorizza in una variabile che poi viene passata alla sub Query_Privacy(num_rec as long) infatti il valore di num_rec è il valore passato che corrisponde a quanto letto dal controllo.
La Function che legge il valore del controllo è la seguente:
Function Leggi_Controllo(controllo as string) <--- passare il nome del controllo da leggere
REM Legge il valore di un campo testo e lo restituisce
oForm = ThisComponent.DrawPage.forms.MainForm
oggetto=oForm.GetByName(controllo)
valore=oggetto.text
Leggi_Controllo=valore
End Function
in sostanza utilizzare la Function così
sub pulsante
dim valore as long
valore=Clng(Leggi_Controllo("fmtID")) <--- dove "fmtID" corrisponde al nome del controllo da leggere
Query_Privacy(valore)
------
end sub
Siccome ho poco tempo (e lo si evince anche da quanto tempo passa tra un mio post e l'altro) attualmente per leggere tipi di controllo diversi uso Function diverse (caselle di testo, check box, etc...) perchè di fatto ogni oggetto ha proprietà diverse da leggere (casella di testo ha "text", check box ha "State", un campo data ha "Date"). L'evoluzione naturale della Function Leggi_Controllo sarebbe quella di passarle oltre che al nome del controllo da leggere, anche di che controllo si tratta in modo da interrogare la proprietà corretta in base al tipo di oggetto.... magari appena ho un po' di tempo lo faccio.
A disposizione per ulteriori chiarimenti.
Ciao a tutti
In realtà non sono stato molto chiaro e me ne rendo conto solo ora mi spiace.
Giustamente come affermato da Vladko la macro che manca è quella che legge il valore dal controllo, la memorizza in una variabile che poi viene passata alla sub Query_Privacy(num_rec as long) infatti il valore di num_rec è il valore passato che corrisponde a quanto letto dal controllo.
La Function che legge il valore del controllo è la seguente:
Function Leggi_Controllo(controllo as string) <--- passare il nome del controllo da leggere
REM Legge il valore di un campo testo e lo restituisce
oForm = ThisComponent.DrawPage.forms.MainForm
oggetto=oForm.GetByName(controllo)
valore=oggetto.text
Leggi_Controllo=valore
End Function
in sostanza utilizzare la Function così
sub pulsante
dim valore as long
valore=Clng(Leggi_Controllo("fmtID")) <--- dove "fmtID" corrisponde al nome del controllo da leggere
Query_Privacy(valore)
------
end sub
Siccome ho poco tempo (e lo si evince anche da quanto tempo passa tra un mio post e l'altro) attualmente per leggere tipi di controllo diversi uso Function diverse (caselle di testo, check box, etc...) perchè di fatto ogni oggetto ha proprietà diverse da leggere (casella di testo ha "text", check box ha "State", un campo data ha "Date"). L'evoluzione naturale della Function Leggi_Controllo sarebbe quella di passarle oltre che al nome del controllo da leggere, anche di che controllo si tratta in modo da interrogare la proprietà corretta in base al tipo di oggetto.... magari appena ho un po' di tempo lo faccio.
A disposizione per ulteriori chiarimenti.
Ciao a tutti
Openoffice 3 su Mac Os 10.6.8 Leopard
Re: [RISOLTO] Inserimento record specifico in documento writ
ciao
ho trovato la tua soluzione molto elegante, e l'ho adottata pure io.
ora ho un pulsante che
-estrapola un dato da una text box nel form corrente (id)
-lo utilizza per effettuare una query (che in pratica poi contiene solo un record)
-apre un file writer precedentemente formattato e con i link nel testo ai campi della query in oggetto
ora ho 2 problemi che mi stanno facendo letteralmente impazzire
il primo, il più grave, è che seppur la query si aggiorni correttamente, il testo non si aggiorna finche non vado a selezionare manualmente il campo, l'unico, della query e poi premo il pulsante dati in campi.
vorrei fare in modo che il testo si aggiorni automaticamente, ma come???
il secondo problema è che poi, quando premo "stampa", mi dice che il mio documento contiene un database rubrica e mi chiede se voglio eseguire una stampa in serie... nooooooo!!!!!! c'è un modo per evitare che mi chieda sempre sta cosa?
grazie in anticipo!
ho trovato la tua soluzione molto elegante, e l'ho adottata pure io.
ora ho un pulsante che
-estrapola un dato da una text box nel form corrente (id)
-lo utilizza per effettuare una query (che in pratica poi contiene solo un record)
-apre un file writer precedentemente formattato e con i link nel testo ai campi della query in oggetto
ora ho 2 problemi che mi stanno facendo letteralmente impazzire
il primo, il più grave, è che seppur la query si aggiorni correttamente, il testo non si aggiorna finche non vado a selezionare manualmente il campo, l'unico, della query e poi premo il pulsante dati in campi.
vorrei fare in modo che il testo si aggiorni automaticamente, ma come???
il secondo problema è che poi, quando premo "stampa", mi dice che il mio documento contiene un database rubrica e mi chiede se voglio eseguire una stampa in serie... nooooooo!!!!!! c'è un modo per evitare che mi chieda sempre sta cosa?
grazie in anticipo!
OOo 3.2.1 Win7 x64
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: [RISOLTO] Inserimento record specifico in documento writ
Perchè hai generato una stampa in serie.
Dovresti inserire i campi formulario in writer (menu visualizza -> barre degli strumenti -> controlli per formulario) collegati al database (registrato) ed alla tua ricerca.
In questo modo ad ogni apertura si aggiorna tutto automaticamente.
Io i moduli così creati li ho salvato come modelli in sola lettura.
Dovresti inserire i campi formulario in writer (menu visualizza -> barre degli strumenti -> controlli per formulario) collegati al database (registrato) ed alla tua ricerca.
In questo modo ad ogni apertura si aggiorna tutto automaticamente.
Io i moduli così creati li ho salvato come modelli in sola lettura.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
Re: [RISOLTO] Inserimento record specifico in documento writ
grazie mille! ora è perfetto!
OOo 3.2.1 Win7 x64
Re: [RISOLTO] Inserimento record specifico in documento writ
visto che ci sono, approfitto della vostra disponibilità sottoponendovi questa nuova questione...
http://user.services.openoffice.org/it/ ... =13&t=2297
grazie veramente di cuore a quanti vorranno aiutarmi....
http://user.services.openoffice.org/it/ ... =13&t=2297
grazie veramente di cuore a quanti vorranno aiutarmi....
OOo 3.2.1 Win7 x64