[ snowwoman @ 28.09.2004. 18:50 ] @
Pozdrav svima,

pokusavam da napravim paket za prebacivanje podataka iz SQL server baze u FoxPro bazu. Podaci koji se prebacuju zavise od spoljasnjeg parametra. Kada SELECT upit koji prebacuje podatke (koristim Transform Data Task) napisem sa fiksnim vrednostima radi, a kada stavim da gleda parametar, javlja mi sintax error.

Upit koji radi:

select productID, office_name, office_infoID, officeID, serviceID, currID,
bankID, bank_name, branch_name, branch_infoID, branchID, rtrim(left(c.corr_name,25))+'('+cast(c.priority as varchar)+')' as corr_name, p.corrID as corrID, countryID, cityID, p.status as status, p.folio_type as folio_type
from dbo.v_Product_POS p LEFT OUTER JOIN dba.Correspondent c on p.corrID=c.corrID
where p.status=1
and ((select new_pp from oper.Agent where Acode='M0001')*p.officeID>=0
or (select new_pp from oper.Agent where Acode='M0001')*p.branchID>=0)

order by productID desc

Upit koji ne radi:

select productID, office_name, office_infoID, officeID, serviceID, currID,
bankID, bank_name, branch_name, branch_infoID, branchID, rtrim(left(c.corr_name,25))+'('+cast(c.priority as varchar)+')' as corr_name, p.corrID as corrID, countryID, cityID, p.status as status, p.folio_type as folio_type
from dbo.v_Product_POS p LEFT OUTER JOIN dba.Correspondent c on p.corrID=c.corrID
where p.status=1
and ((select new_pp from oper.Agent where Acode=?)*p.officeID>=0
or (select new_pp from oper.Agent where Acode=?)*p.branchID>=0)

order by productID desc

Imam globalni parametar Acode definisan za paket.

U cemu je problem? Da li ovi upiti za DTS ne podrzavaju ugnjezdene upite?

Unapred zahvalna :)
[ amladjo @ 29.09.2004. 11:57 ] @
Dva upitnika predstavljaju dva parametra. Bar u ADO okruženju koje koristim.

Pokušaj navesti dva parametra čiji je sadržaj isti ('M0001').
[ snowwoman @ 29.09.2004. 15:37 ] @
Ne radi :(

Probala sam vec ranije bila da ostavim samo jedan upitnik (pomislivsi da je problem taj koji si naveo), a da drugi zamenim stringom, ali nece da radi. Javlja mi sintax error na Parse Query, tako da ni ne mogu da odem na dodavanje parametara.

Ako probam da u where uslov stavim polje1=? and polje2=?, radi bez obzira koliko parametara imam (bitno je da imam jedan definisan). Nece da radi u ovom ugnjezdenom upitu.

Katarina
[ DarkMan @ 29.09.2004. 23:12 ] @
Nisam nikada koristio parametrizovane upite a ne znam ni sta ti je ovo DTS, ali ako ti je to sintaksa za TRANSACT SQL i kao sto si navela da ne prima ? u ugnjezdenoj petlji mozes da probas sledece:

DECLARE @param1 varchar(30)
DECLARE @param2 varchar(30)

SET @param1 = ?;
SET @param2 = ?;
select productID, office_name, office_infoID, officeID, serviceID, currID,
bankID, bank_name, branch_name, branch_infoID, branchID, rtrim(left(c.corr_name,25))+'('+cast(c.priority as varchar)+')' as corr_name, p.corrID as corrID, countryID, cityID, p.status as status, p.folio_type as folio_type
from dbo.v_Product_POS p LEFT OUTER JOIN dba.Correspondent c on p.corrID=c.corrID
where p.status=1
and ((select new_pp from oper.Agent where Acode=@param1)*p.officeID>=0
or (select new_pp from oper.Agent where Acode=@param2)*p.branchID>=0)
order by productID desc;


U svakom slicaju ako ti nista ne funkcionise napravi query rucno pomocu stringova.
[ snowwoman @ 30.09.2004. 11:26 ] @
DTS (Data Transformation Services) jesu servisi SQL servera za brzo prebacivanje puno podataka iz jedne baze u drugu (ili iz fajla / u fajl). Upit koji sam navela koristim za selektovanje podataka koji se prebacuju. Kada se koristi Transform Data Task potrebno je napisati samo SQL upit (znaci jedna naredba), ne moze se koristiti Transact SQL. A meni je potrebna zavisnost od spoljasnjeg parametra.

Postoji drugi nacin. Da prvo ove podatke ispucam u neku tabelu (prilikom pozivanja paketa u zavisnosti od prosledjenog parametra). I onda selektovanje vrsim samo iz te tabele upitom tipa (select polje1, polje2, ..., poljeN from pom_table where polje1=? ).Ovo sam uradila i radi sve super.

Ono sto sam ja htela jeste da izbegnem ubacivanje u pomocnu tabelu, vec sam htela sve resiti jednim upitom. Zanima me da li je to moguce? Da znam za ubuduce :) Ako nije moguce zasto nije moguce, jer nisam uspela da nadjem objasnjenje o tome da li je dozvoljeno koriscenje parametara u ugnjezdenom upitu koji se koristi kao Transform Data Task.

Pozdrav
[ snowwoman @ 30.09.2004. 11:36 ] @
E samo da vam javim da sam saznala da se parametri ne mogu koristiti u ugnjezdenim upitima koji se koriste za prebacivanje podataka u DTS :(

Zivi bili :)