Newsgroup: it.comp.lang.delphi
Titolo: Parametri duplicati in query

Ciao a tutti,
chiedo conferma se ci sono problemi nell'utilizzare lo stesso
parametro più volte in una query Access.
Ho riscontrato che il parametro viene valorizzato solo al primo
riferimento e non nei successivi, restituendo dataset inattendibili (e
non generando errori).
Confermate?
 
Ciao,
Andrea

E' il COMPONENTE che, quando scrivi paramByName('xx)  si ferma al primo che trova, secondo me. Se fosse cosi, il la cosa prescinde dal database che usi.
 
A.

Utilizzo ADO..
Non è un grosso problema (ho rinominato i parametri duplicati e tuuto
è ok) ma certo in una query molto complessa mi ci è voluto un pò a
capire quale fosse il problema.
Mi pare comunque una grossa pecca dei componenti in questione
(TAdoDataSet, TAdoCommand)
 
Andrea

 (TAdoDataSet, TAdoCommand)
 
Cioè, tu inserisci dei parametri duplicati, e i componenti ADO avrebbero la pecca di non riuscire a capire a quale ti riferisci. Mmm... :)
 
-- 
MARCO BREVEGLIERI
#Home: 
http://www.marco.breveglieri.name
 
#Blog: 
http://www.compilaquindiva.net
 

> Mi pare comunque una grossa pecca dei componenti in questione
 
xche?
 
A.

Dunque, se io definisco una query
 
'SELECT ....  WHERE CAMPO1 = :param AND CAMPO2 = :param'
 
e definisco il parametro
 
adoDataSet.Parameters.ParamByName('param').Value := myparam;  //
myparam è una variabile
 
mi aspetto che i due parametri della query siano valorizzati allo
stesso modo ossia = myparam
 
invece viene valorizzato solo il primo parametro....
Non so x voi, ma per me è un comportamento non corretto.
 
Andrea

 Non so x voi, ma per me è un comportamento non corretto.
 
Bisogna vedere come il driver ADO gestisce quella situazione.
 
Devo dire che non mi è mai capitato di utilizzare due volte un parametro all'interno di una query.


 Non so x voi, ma per me è un comportamento non corretto.
 
A parte che concettualmente avere dentro la stessa collection 2 elementi uguali non e' corretto, questa cosa aiuta a evitare confusione.
Ben venga quanto ci aiuta a evitare confusione!
 
A.

 A parte che concettualmente avere dentro la stessa collection 2 elementi uguali non e' corretto, questa cosa aiuta a evitare confusione.
 
Perchè affermi che concettualmente è sbagliato? Forse è sbagliato
perchè il tuo concetto di collection lo considera tale ;-)
 
La STL del c++ ha tra i suoi container le liste: esse ammettono 
duplicati e permettono di rimuoverli tutti con un opportuno metodo.
Idem anche in Delphi con la TStringList.
Qt offre una QList che si comporta allo stesso modo.
Java fornisce l'ArrayList che, ovviamente, fa come tutte le altre: 
mantiene i duplicati.
 
 
-- 
morde
Android
QT 4.7
Delphi (5,6,7.. expired)
Firebird Database
 

Touche.
 
 
A.

 Confermate?
 
La stessa cosa per me. (Delphi 2010, ADO)
Se devo usare un parametro pi� volte in una query per aumentare la 
leggibilit� del codice non voglio introdurre per ogni posizioine un 
parametro nuovo. Siccome lavoriamo con SQL Server, uso invece il linguaggio 
T-SQL per definire dei Variabili (a livello SQL) che vengono settati una 
volta con i parametri. Poi uso nel query i variabili SQL quante volte 
occorre:
 
DECLARE @idCod int;
 
SET @idCod = :idCod;
 
SELECT ...
FROM tab1 t
WHERE t.campo1 = @idCod
  AND t.campo2 <> @idCod;
 
Non ti so dire per� se con Access puoi fare in questo modo.
 
Tanti saluti,
 
Hubert