Esegui SQL

Esegui SQL

Categoria:
0
0

Buonasera a tutti.
Ho questo tipo di problema: se utilizzo i campi Riassunto per avere l'estratto conto relativo ai fatturati degli agenti, ad ogni operazione FM calcola tali riassunti rallentando il lavoro degli agenti stessi.
Ho quindi deciso di iniziare ad utilizzare SQL.
Qui di seguito un primo timido e problematico tentativo.

EseguiSQL ( "SELECT SUM ( Prz_Imponibile ) FROM FaR WHERE DataFattura = '24/06/2022'" ; "" ; "" ) ... dove:
Prz_Imponibile è la colonna relativa a ciò che voglio sommare;
FaR è la tabella che contiene Prz_Imponibile;
DataFattura è il criterio temporale

Mi ritengo già fortunato ad aver già superato la fase del "?", ma sto cercando di capire per quale motivo, a fronte di una cifra che dovrebbe essere €. 5.530,44, il Visualizzatore Dati mi propone un bel 5035.829051601042436, mentre se lancio lo script mi incolla un bel €. 5.035.829.051.601.042.436,00.

Grazie.

antonio

Segnalato come spam
Pubblicato da (Domande: 5, Risposte: 4)
Domandato il 25 Giugno 2022 12:25
112 visualizzazioni
0
Domanda privata

Buongiorno, antonio.
la risposta breve alla domanda è che eseguisql restituisce le cifre con la notazione americana (quindi con il . Come separatore dei decimali). Quindi per risolvere dovresti aggiungere un calcolo tipo

cercaesost( eseguisql(tuocalcolo); “.”;”,”)

ció detto, a parte eseguisql puoi usare almeno  due metodi:

- riassunti ( ma mostrati solo alla fine della procedura)

- relazioni (per id agente e data)

in generale se usi eseguisql ti conviene mettere i valori variabili nei parametri alle fine, usando l’apposito segnaposto ? . Qualcosa cone:

EseguiSQL ( "SELECT SUM ( Prz_Imponibile ) FROM FaR WHERE DataFattura = ?" ; "" ; ""; latuadata )

Facci sapere!

.g.

 

Segnalata come spam
Pubblicato da (Domande: 0, Risposte: 1480)
Risposto il 26 Giugno 2022 16:56
0
Domanda privata

Perfetto.

Ho utilizzato il cercaesost ed ho aggiunto una variabile ($$DATA che non è nient'altro che un Get(DataCorrente) alla fine della SQL ed il dato e congruo.

Adesso è così: EseguiSQL ( "SELECT SUM ( Prz_SubTotale ) FROM FaR WHERE DataFattura = ?" ; "" ; "" ; $$DATA )

Mi rimane l'ultimo scoglio: come (e dove) inserisco il nome dell'agente affinché ogni agente "veda" il frutto del proprio lavoro?

Ho fatto un po' di prove con WHERE, ma non ho cavato un ragno dal buco, non capisco come aumentare i criteri di ricerca.

Grazie dell'aiuto.

antonio

Segnalata come spam
Pubblicato da (Domande: 5, Risposte: 4)
Risposto il 26 Giugno 2022 21:10
0
Domanda privata

Un qualcosa tipo:

EseguiSQL ( "SELECT SUM ( Prz_SubTotale ) FROM FaR WHERE DataFattura = ? AND agente_id=?" ; "" ; "" ; $$DATA; $id_agente)

 

in realtà puoi inserire quanti parametri vuoi.

facci sapere! :)

.g.

Segnalata come spam
Pubblicato da (Domande: 0, Risposte: 1480)
Risposto il 27 Giugno 2022 10:20
0
Domanda privata

Anche se io magari valuterei anche   una visualizzazione da  da agenti, con relazione per  id e data (con campi globali su agenti) e un semplice campo somma() per i totali.
.g.

Segnalata come spam
Pubblicato da (Domande: 0, Risposte: 1480)
Risposto il 27 Giugno 2022 13:53
0
Domanda privata

... mmm ... la SQL mi da delle somme non corrette, ho deviato sulla relazione ID e DATA e un campo SOMMA(Far 8::Prz_Subtotale).

Non capisco, probabilmente sto sbagliando la sintassi del SQL.

EseguiSQL ( "SELECT SUM ( Prz_SubTotale ) FROM FaR WHERE DataFattura = ? AND CognomeAgente = ?"; "" ; "" ; $$DATA ; $$AGENTE )

Avrò problemi con i grafici ...

 

antonio

Segnalata come spam
Pubblicato da (Domande: 5, Risposte: 4)
Risposto il 27 Giugno 2022 22:08
0
Domanda privata

Per non farmi mancare niente ho appena acquistato il corso (Udemy) Collegare FileMaker a MySQL.

Bene

 

antonio

Segnalata come spam
Pubblicato da (Domande: 5, Risposte: 4)
Risposto il 27 Giugno 2022 23:08
0
Domanda privata

Rifatto Funziona. Errore mio, avevo lasciato una data fissa al posto di una variabile.

Verificato il perfetto funzionamento, adesso ho il problema che non so come scrivere  quello che in FM si ottiene interponendo tre puntini tra due date.

Ho scritto così EseguiSQL ( "SELECT SUM ( Prz_SubTotale ) FROM FaR WHERE DataFattura BETWEEN $$DAL AND $$AL AND CognomeAgente = ?"; "" ; "" ; $$AGENTE) ma è uscito il magico punto di domanda, dove sbaglio?

 

Antonio

Segnalata come spam
Pubblicato da (Domande: 5, Risposte: 4)
Risposto il 27 Giugno 2022 23:58
0
Domanda privata

Ti mancano le due date fra i parametri finali. Inoltre non ti conviene usare between ma <= e >=. Qualcosa tipo:

 

EseguiSQL ( "SELECT SUM ( Prz_SubTotale ) FROM FaR WHERE DataFattura >= ? AND DataFattura <= ? AND CognomeAgente = ?"; "" ; "" ; $$dal; $$al; $$AGENTE)

 

l’agente lo valorizzerei per id e non per cognome (per evitare la sindrome mario rossi).

.g.

Segnalata come spam
Pubblicato da (Domande: 0, Risposte: 1480)
Risposto il 28 Giugno 2022 20:01