Pannello di Controllo Moderatore ]

Macro per aggiornare singolo campo in tabella

Discussioni sulle caratteristiche di database

Macro per aggiornare singolo campo in tabella

Messaggioda Wendigo » mercoledì 18 novembre 2020, 9:01

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   Espandi visualeStringi visuale
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.

Cash.jpg
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 13 volte
Ultima modifica di Wendigo il giovedì 19 novembre 2020, 23:15, modificato 4 volte in totale.
OpenOffice 4.1.5 su Windows 10
Wendigo
 
Messaggi: 4
Iscritto il: martedì 17 novembre 2020, 10:17

Re: Macro per aggiornare singolo campo in tabella

Messaggioda charlie » mercoledì 18 novembre 2020, 14:47

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 10.12 Sierra: Open Office 4.1.8 - LibreOffice 6.4.6.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
 
Messaggi: 7139
Iscritto il: mercoledì 19 dicembre 2012, 10:50

Re: Macro per aggiornare singolo campo in tabella

Messaggioda charlie » giovedì 19 novembre 2020, 11:48

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 10.12 Sierra: Open Office 4.1.8 - LibreOffice 6.4.6.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
 
Messaggi: 7139
Iscritto il: mercoledì 19 dicembre 2012, 10:50

Re: Macro per aggiornare singolo campo in tabella

Messaggioda Wendigo » sabato 21 novembre 2020, 21:22

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
Wendigo
 
Messaggi: 4
Iscritto il: martedì 17 novembre 2020, 10:17

Re: Macro per aggiornare singolo campo in tabella

Messaggioda charlie » domenica 22 novembre 2020, 14:10

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 7 volte
charlie
macOS 10.12 Sierra: Open Office 4.1.8 - LibreOffice 6.4.6.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
 
Messaggi: 7139
Iscritto il: mercoledì 19 dicembre 2012, 10:50

Re: Macro per aggiornare singolo campo in tabella

Messaggioda Wendigo » mercoledì 25 novembre 2020, 10:05

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
Wendigo
 
Messaggi: 4
Iscritto il: martedì 17 novembre 2020, 10:17

Re: Macro per aggiornare singolo campo in tabella

Messaggioda charlie » mercoledì 25 novembre 2020, 18:11

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 7 volte
charlie
macOS 10.12 Sierra: Open Office 4.1.8 - LibreOffice 6.4.6.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
 
Messaggi: 7139
Iscritto il: mercoledì 19 dicembre 2012, 10:50

Re: Macro per aggiornare singolo campo in tabella

Messaggioda charlie » giovedì 26 novembre 2020, 7:05

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 7 volte
charlie
macOS 10.12 Sierra: Open Office 4.1.8 - LibreOffice 6.4.6.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
 
Messaggi: 7139
Iscritto il: mercoledì 19 dicembre 2012, 10:50


Torna a Base

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti