controllo sui campi

Conosci dei gestionali o cerchi un prodotto per la tua azienda? Scrivi in questo forum

Moderatore: Moderatori

raysoyd
Messaggi: 549
Iscritto il: giovedì 13 gennaio 2005, 1:00

controllo sui campi

Messaggio da raysoyd » domenica 17 settembre 2006, 19:49

Buon pomeriggio a tutti, io avvrei qualche problema a impostare un controllo, ho una tabella movimenti dove vengono inseriti dei record, ma se per caso inserisco un record che in un campo "tipo mov" il valore è Credito e in un altro campo "ID" un valore numerico gia esistente, devo visualizzare un messaggio che questo mivimento è gia stato creato e quindi impedire di il salvataggio del record. A presto...Daniele

book
Messaggi: 703
Iscritto il: lunedì 5 gennaio 2004, 1:00

Messaggio da book » domenica 17 settembre 2006, 21:59

Caro Stregatto,

prima che ti incacchi perchè non hai compreso quale sia la richiesta e te la prendi con il povero Daniele consentimi di tradurti quanto scritto sopra.
Il buon Daniele ha "qualche problema" in una tabella movimenti.
In pratica tiene tutti i movimenti nella stessa tabella ( sia quelli a credito che quelli a debito e forse anche quelli a qualche altra cosa).
Ai vari tipi di movimento assegna degli ID probabilmente in modo manuale, quindi avrà ID 00010 credito,
ID 00017 debito ma anche ID 00017 credito.
Ecco Daniele ti chiede se gli puoi spiegare un controllo tramite "messaggio" che lo avvisi che quel ID in quel tipo di movimento è già stato utilizzato ed è presente.

ciao
Riccardo

stregatto
Messaggi: 9700
Iscritto il: lunedì 1 dicembre 2003, 1:00
Località: Roma
Contatta:

Messaggio da stregatto » domenica 17 settembre 2006, 22:14

ma non mi sarei innervosito per nulla. mi limitavo ad aspettare il tuo interpretariato… ;)

.g.

raysoyd
Messaggi: 549
Iscritto il: giovedì 13 gennaio 2005, 1:00

Messaggio da raysoyd » lunedì 18 settembre 2006, 7:24

Capisco che vi metto in difficolta per interpretare il mio post. ma capitemi all'ingnoranza non c'è mai fine. Il mio id non è manuale, ma richiama una scheda di lavoro di una tabella, quindi scheda lavoro completata il cliente è in credito di 10€, dalla tabella, per mezzo di un portale mi creo un record nella tabella movimenti;tipo di movimento "credito"e scheda lavoro:"id scheda lavoro", naturalmente quando il cliente mi paghera il lavoro per quella scheda creo un record dove inserisco tipo di movimento "Pag. in contanti" è l'id della scheda lavoro. Puo capitare che il credito per la stessa scheda lo creo due volte, io vorrei impedire questo.

:roll: Book ti affido il compito di interpretare

A parte lo scherzo mi dispiace se vi faccio perdere ulteriore tempo. Vi ringrazio ancora......... Daniele

book
Messaggi: 703
Iscritto il: lunedì 5 gennaio 2004, 1:00

Messaggio da book » lunedì 18 settembre 2006, 9:00

Caro Daniele stai chiedendo di aiutarti a correggere degli errori di impostazione del database.
Ovviamente il controllo si può fare ma ti suggerisco di rivedere il database.

ricapitolando hai formato/tabella lavoro/cliente che produce un debito.
devi relazionare tale tabella con un'altra tabella che riduce il debito.
è una relazione 1 a tanti in quanto potrebbero esserci vari pagamenti a saldo del debito e il lato "tanti" non ha nemmeno necessità di avere un ID in quanto FM lo assegna da solo "in background".

nel formato lavoro/cliente visualizzi il portale che mostra i record dei pagamenti e da quel portale crei i nuovi movimenti di cui ne farai la somma degli importi che ridurranno il debito.

saluti
Riccardo

raysoyd
Messaggi: 549
Iscritto il: giovedì 13 gennaio 2005, 1:00

Messaggio da raysoyd » lunedì 18 settembre 2006, 10:50

[/nel formato lavoro/cliente visualizzi il portale che mostra i record dei pagamenti e da quel portale crei i nuovi movimenti di cui ne farai la somma degli importi che ridurranno il debito.]


veramente nel formato lavoro ho un portale che mi indica i debiti e i crediti riferiti al cliente e mi funziona anche uno scrpt che mi crea quel famoso record "credito" e id della scheda lavoro, non vorrei creare per sbaglio lo stesso record due volte nel portale sopra indicato. non so come fare a creare quella condizione che se esiste un record con la stessa scheda lavoro e nel campo tipologia ci sia "Credito" mi impedisca in salvataggio e possibilmente mi vusualizzi un messaggio. La stuttura del database è quella che tu mi hai suggerito. Grazie ancora

book
Messaggi: 703
Iscritto il: lunedì 5 gennaio 2004, 1:00

Messaggio da book » lunedì 18 settembre 2006, 12:03

mi funziona anche uno scrpt che mi crea quel famoso record "credito" e id della scheda lavoro, non vorrei creare per sbaglio lo stesso record due volte nel portale sopra indicato.
il problema è qui: non hai necessità di usare uno script per creare il record correlato al massimo puoi usare uno script che ti copi il valore dell'ID lavoro nel campo ID movimento se questo valore ti dovesse servire.

nel portale infatti è sufficiente inserire un valore nella riga vuota ed ecco che il record correlato è stato creato.
In più ti aggiungo che tutti i movimenti li vedi elencati nel portale, quindi non c'è molta possibilità di sbagliare nell'inserirli doppi. (sempre che tu li inserisci da portale come ti ho sopra suggerito)

saluti
Riccardo

raysoyd
Messaggi: 549
Iscritto il: giovedì 13 gennaio 2005, 1:00

Messaggio da raysoyd » lunedì 18 settembre 2006, 12:53

si perfetto questo è tutto chiaro, io ho utilizzato lo script solo per copiare alcuni campi in modo automatico, e solo che non riesco a inpostare questo controllo, è molto probabile che avvio lo script piu di una volta percui mi ritroverei di aver acreditato del credito che non gli spetta. forse non riesco a essere abbastanza chiaro. grazie ancora

book
Messaggi: 703
Iscritto il: lunedì 5 gennaio 2004, 1:00

Messaggio da book » lunedì 18 settembre 2006, 17:08

scusami ma forse non sono stato chiaro io...

a mio parere il controllo deve essere fatto al momento dell'immissione dei dati.
sempre a mio parere non puoi fare un controllo su di uno script che parte a richiesta e quindi al clic dell'operatore.
peraltro, questo controllo dove dovrebbe essere fatto? ovvero su quale/i campi?.
sulla data del movimento no di certo perchè potresti avere movimenti con la stessa data riferiti allo stesso cliente.
il no è anche sull'importo e sulla descrizione...etc. per gli stessi motivi.

quindi devi mettere in condizione l'operatore a non commettere errori ed a fine serata un loop di verifica della presenza di doppioni nelle righe dei movimenti.

ora vediamo se ti posso aiutare nello specifico.
hai forse necessità di uno script che venga eseguito solo una volta per ogni record?

questo è semplice da fare: crei un campo di tipo testo (non globale) alla creazione del record gli dai il valore 0 tramite immissione automatica.

all'inizio dello script da eseguire verifichi che questo campo contenga 0.
se "SI" continui lo script e quindi crei il record e definisci il valore del campo in argomento al valore 1.
se "NO" esci dallo script.

fammi sapere
saluti
Riccardo

raysoyd
Messaggi: 549
Iscritto il: giovedì 13 gennaio 2005, 1:00

Messaggio da raysoyd » martedì 19 settembre 2006, 11:04

Buona giornata Riccardo, ho sempre pensato che il controllo lo dovesse fare la stuttura del database e non lo script, ho utilizzato semplicemente lo script per copiare alcuni campi in modo automatico. Invece questa notte pensando a quello che mi hai scritto sono arrivato alla felice conclusione di creare nella tabella movimenti un campo nascosto con propieta testo calcolato:
If ( Tipo movimento = "CREDITO"; Tipo movimento & " " & id scheda lavoro data; "")
e nella verifica ho messo valore unico, in questo modo mi funziona sia con lo script che senza. ho provato naturalmente a creare anche altro movimenti con la stessa scheda lavoro ma avendo tipo movimento diverso non mi impedisce la creazione del record, grazie a te e al tuo aito ho reso la mia partita doppia più stabile. Sai poteva capitare che per sbaglio al cliente accreditavo due volte lo stesso lavoro, avendo clienti che si fidano cecamente non mi sembra corretto.Sicuramente ci sono tantissimi altri metodi per arrivare al risultato in modo più "elegante", ma devo usare le armi che si possiedono...

Saluti Daniele


:o

Rispondi