WHERE clause raddoppiata con sc_redir ???

Raccoglitore di domande e risposte relative a ScriptCase, il generatore di codice php per lo sviluppo rapido di applicazioni.
Regole del forum
Nel forum è vietato fare pubblicità senza avere l'autorizzazione dello staf di Netspecial.
Rispondi
Giovannino
Messaggi: 116
Iscritto il: 06 ott 2014, 08:56

WHERE clause raddoppiata con sc_redir ???

Messaggio da Giovannino » 24 mag 2018, 09:23

Salve,
ho una grid "hhh_grid_products_for_order" che funziona con una query abbastanza normale dove ho inserito una WHERE finale per aver solo i prezzi dell'anno in corso
SELECT
......
.....
FROM products
LEFT JOIN price_list ON (products.ProductID = price_list.ProductID) AND (price_list.CustomerID = '[glo_CustomerID]' )
LEFT JOIN categories ON (products.CategoryID = categories.CategoryID )
LEFT JOIN price_list_std ON (products.ProductID = price_list_std.ProductID)
WHERE (price_list_std.RefYear = YEAR(CURDATE()) )
ORDER BY price_list.UnitPrice DESC

Ovviamente provata direttamente in mySLQ in tutte le salse e funziona perfettamente.

Dalla grid, tramite bottone , mi sposto su una FORM per delle verifiche e poi sempre con bottone ritorno alla grid sopracitata.
Codice del bottone di ritorno
[glo_flag_search]=1;
sc_redir(hhh_grid_products_for_order, parm1='[glo_CustomerID]', "_parent");
sc_exit();

Quando clicco sul bottone di ritorno mi appare questo strano errore con la WHERE clause raddoppiata .
Errore
Errore durante l'accesso alla banca dati:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where price_list_std.RefYear = YEAR(CURDATE())' at line 1
select count(*) from products LEFT JOIN price_list ON (products.ProductID = price_list.ProductID) AND (price_list.CustomerID = 'C630' ) LEFT JOIN categories ON (products.CategoryID = categories.CategoryID ) LEFT JOIN price_list_std ON (products.ProductID = price_list_std.ProductID) where (price_list_std.RefYear = YEAR(CURDATE()) ) where price_list_std.RefYear = YEAR(CURDATE())

Ho perso 2 giornate e ho fatto di tutto ma veramente non riesco a venircene fuori.
Perchè mi raddoppia la WHERE ????
HELP !!!!

rino
Messaggi: 661
Iscritto il: 18 giu 2015, 15:42
Località: Pinerolo
Contatta:

Re: WHERE clause raddoppiata con sc_redir ???

Messaggio da rino » 25 mag 2018, 07:29

sto leggendo casualmente e non ho SC aperto ma non esiste una voce sulla gestione del link che parla di mantenimento clausola where? mai usata ma non potrebe essere?
Se non en vieni fuori controlla ad inizoi app se la condizioen where è piena o vuota . l esempio lo trovi nel manuale in corrispondenza dell amacro per gestirel a where . tacconi il problema ma almeno vai avanti.
Al momento io non so cos altro dirti tranne che una query dle genere la farei via view , ho notato che i campi generati dalle query non li gestisce bene in caso di odrinementi sulle grigile. Inoltre milgiori i tempi di elaborazione perchè le viste sono immediatamente usabili e "pesano" solo nel momento di generazione /modifica del record originale , sui grandi numeri la differenza è sensibile. Ovviamente la clausola where la gestisci dentro l app
Rino Lo Turco
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase

Giovannino
Messaggi: 116
Iscritto il: 06 ott 2014, 08:56

Re: WHERE clause raddoppiata con sc_redir ???

Messaggio da Giovannino » 25 mag 2018, 09:19

Ciao Rino e grazie.

Ho fatto una prova e cioè ho cancellato la cookies cache di Crome e poi ho lanciato la app e premuto il bottone di ritorno.
La prima volta che ritorna funziona come dovrebbe senza dare errore.
Se ripeto la seconda volta mi salta fuori l'errore .... ;-((
Per me è un mistero. Avrò decine e decine di query con un where inserito come ad esempio tutte quelle delle master/details
Cosa potrebbe essere ?

Giovannino
Messaggi: 116
Iscritto il: 06 ott 2014, 08:56

Re: WHERE clause raddoppiata con sc_redir ???

Messaggio da Giovannino » 25 mag 2018, 10:21

Forse ho trovato l'inghippo...
Dopo 4 anni mi ero perso la logica....
Il grid permette di inserire in una casella una quantità di ordine (input) e per questo era stato fatto del codice custom abbastanza incasinato.
Le grid standard non permettono input .
Il problema era che se si facevano dei filtri (refined search) poi quando tornato dalle altre app linkate li perdeva e l'utente voleva mantenere la selezione eseguita. Senza custom SC lo fa di suo.
Allora avevo fatto in modo che SC si mantenesse i filtri ovvero i WHERE in una variabile globale e quando tornavo la applicavo nello OnScriptInit.
Avendo inserito in aggiunto un WHERE nello SQL ora lui ha praticamente il suo dello SQL e in più quello della variabile globale .
Quindi me lo raddoppia.
Ora il bello è come fare ? Se faccio una vista come dici tu e poi modifico la SQL .. SC mi sfascia tutto il grid e non ci penso neanche a metterlo a posto dato che è super incasinato.
Boh...

Nel bottone di link del grid principale ho questo codice

$save_current_where = {sc_where_current};
[glo_save_current_where_temp]= $save_current_where;
[glo_flag_search]=0;
sc_redir(form_products_selected_rfqs,parm1='[glo_CustomerID]');

e OnScripInit (quando torno dal bottone della app linkata forzo [glo_flag_search] a 1 e poi qui applico la select con WHERE aggiunto

if([glo_flag_search]==1)
{
sc_select_where(add) = [glo_save_current_where_temp];
[glo_flag_search]=0;
}

Mi vien male....

Rispondi

Chi c’è in linea

Visitano il forum: Ahrefs [Bot] e 3 ospiti