Macro per aggiornare singolo campo in tabella

Discussioni sulle caratteristiche di database
Rispondi
Wendigo
Messaggi: 4
Iscritto il: martedì 17 novembre 2020, 10:17

Macro per aggiornare singolo campo in tabella

Messaggio da Wendigo »

Ciao
Mi sto facendo un mini DB per tenermi la contabilità del mio miniEshop e sono veramente alle prime armi (anzi direi disarmato) con la programmazione dei DB...
Una sola singola tabella ed una sola singola maschera per immissione dati con una sola singola piccolissima macro... ma NON FUNZIONA :crazy:
Ecco la macro

Codice: Seleziona tutto

Function fCASH
oDoc = ThisComponent
oForm = oDoc.getDrawPage.getForms.getByName("MainForm")
SF = oForm.getByName("fmtScontrino")
POS = oForm.getByName("fmtPOS")
CASH = oForm.getByName("fmtCash")
vSF = CDbl(SF.text)
vPOS = CDbl(POS.text)
vCASH = (vSF - vPOS)
CASH.text = vCASH
End Function 

Scopo della Macro: una volta inserito il campo "Scontrino" e "POS" per differenza mi deve compilare il campo CASH in automatico sulla tabella (e chi compila il campo non deve essere in grado di modificarlo). Essendo un Form di immissione dovrà creare una riga nuova ad ogni apertura e MAI modificare una già esistente.

ERRORE: Mi appare nel Form di immissione il valore corretto MA NON MI AGGIORNA IL CAMPO NELLA TABELLA :knock:

Ho provato con CASH.Value = vCASH ma da errori su errori.
screen del Form
screen del Form
 Editato: Aggiornato il file database - chiedo venia i nomi differiscono di poco ed a volte faccio confusione anche io 
 Editato: Modificato valore chiave primaria, ora è automatico ed aggiornato file in allegato 
Allegati
My_Income.odb
il database
(13.3 KiB) Scaricato 180 volte
Ultima modifica di Wendigo il giovedì 19 novembre 2020, 23:15, modificato 4 volte in totale.
OpenOffice 4.1.5 su Windows 10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro per aggiornare singolo campo in tabella

Messaggio da charlie »

Ciao, cominciare a muoversi nei database partendo direttamente con le macro è abbastanza discutibile.
Comunque, c'è un problema di fondo: all'apertura del form viene segnalato che la tabella Income non esiste. Infatti non c'è nel database.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro per aggiornare singolo campo in tabella

Messaggio da charlie »

Il secondo problema è costituito dal fatto che manca il campo ID (chiave primaria nella tabella) nel formulario. O lo aggiungi per editarlo a mano o, meglio, lo rendi ad incremento automatico nella tabella.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Wendigo
Messaggi: 4
Iscritto il: martedì 17 novembre 2020, 10:17

Re: Macro per aggiornare singolo campo in tabella

Messaggio da Wendigo »

campo ID reso automatico nella tabella ma il campo CASH non si aggiorna comunque.
Qualcuno ha idea di come fare?
OpenOffice 4.1.5 su Windows 10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro per aggiornare singolo campo in tabella

Messaggio da charlie »

Il campo Cash si aggiorna alla perdita del focus (= all'uscita del cursore) del campo stesso.
Tuttavia il form richiede un salvataggio che non è automatico, altrimenti appare un messaggio di conferma alla chiusura dello stesso.
Per rendere le cose più snelle ho impostato tutti i campi in "digitazione necessaria" = no.
Allegati
My_Income_2.odb
(13.82 KiB) Scaricato 145 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Wendigo
Messaggi: 4
Iscritto il: martedì 17 novembre 2020, 10:17

Re: Macro per aggiornare singolo campo in tabella

Messaggio da Wendigo »

Se ho capito bene il campo CASH viene aggiornato solo alla perdita del focus.
E' possibile forzare l'uscita del focus accodandola al comando di valorizzazione del testo ? ( dopo CASH.text = vCASH)
In alternativa come posso impostare il colore di background delle celle del form?
In modo da ricordarmi di clikkare su tutti i campi per fargli cambiare colore? Ad esempio macro impostata "alla perdita del punto focale": colore di sfondo = verde
Purtroppo i campi in digitazione necessaria mi servono (DATA, POS, SF)
OpenOffice 4.1.5 su Windows 10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro per aggiornare singolo campo in tabella

Messaggio da charlie »

Ma perché insistere con le macro?
Puoi fare tutto usando una query dove Cash è un campo calcolato e non visibile in "immissione".
La griglia sottostante visualizza tutti i dati. L'aggiornamento tramite pulsante è solo per la visualizzazione ma la query viene comunque aggiornata perché i campi impostati a digitazione necessaria costringono completare ogni record.
Allegati
Income_senza_macro.odb
(14.06 KiB) Scaricato 163 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro per aggiornare singolo campo in tabella

Messaggio da charlie »

Ecco la versione con macro, modificata. Ma sempre con una query per il campo calcolato Cash.
Allegati
Income_con_macro.odb
(15.51 KiB) Scaricato 163 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Rispondi