Newsgroup: it.comp.lang.visual-basic
Titolo: problema di apici con Select access da inserire in VB

ciao a tutti
allora io ho un problemino di apici con una select access
se la utilizzo in access la query mi funziona perfettamente se la metto
in vb o in asp mi dà OPERATORE MANCANTE o non funge
eccola 
SELECT [ID], [Importo], [Segno], [ID_Part]
FROM Storico
WHERE DSum("IIF(Segno='C',-1,1)*Importo","Storico","Importo=" &
Str([Importo]) & " AND ID=" & [ID])=0
ORDER BY Importo;
cosi funziona perfettamente
se però metto le doppie apici all'inizio e le apicette all'interno mi
dice errore di SINTASSI
sql="SELECT [ID], [Importo], [Segno], [ID_Part]
FROM Storico
WHERE DSum('IIF(Segno='C',-1,1)*Importo','Storico','Importo=' &
Str([Importo]) & ' AND ID=' & [ID])=0 ORDER BY Importo"
come cavolo devo impostare le APICI??
mi aiutate??
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:603b1102aed213f3e77...@mygate.mailgate.org...

Ciao Fabrizio,
ammesso che il problema sia solo negli apici (non credo tu possa utilizzare
da ASP o VB le funzioni iif o DSUM che sono funzioni interne di Access e non
SQL, ma potrei sbagliarmi!!!),
 per evitare l'errore di sintassi sostituisci nella query che funziona il
doppio apice con 2 doppi apici
sql="SELECT [ID], [Importo], [Segno], [ID_Part] FROM Storico
 WHERE DSum(""IIF(Segno='C',-1,1)*Importo"",""Storico"",""Importo="&
 Str([Importo]) & " AND ID=" & "[ID])=0 ORDER BY Importo"
Saluti
Cinzia

ho fatto come hai scritto tu ma mi dà errore alla voce "importo"
e mi dice "nome ESTERNO NON DEFINITO"
non sò se è un problema di apici o di funzioni
devo informarmi
sei sicura che non posso utilizzare IIF o dsum in vb???


 SQL, ma potrei sbagliarmi!!!),
iif funziona in una stringa sql DSUM non l'ho mai sentita.


 --
Ciao Fabrizio,
l'errore te lo da quando esegui il comando SQL o sull'assegnazione?
Dovresti vedere la stringa contenuta in sql così vediamo se abbiamo
dimenticato qualcosa.
Per qunato riguarda l'IIF  e il DSUM non è  che non si possono usare in Vb
(nel codice la IIF puoi usarla), secondo me non si possono usare in
istruzioni SQL richiamate  tramite ADO perchè quelle istruzioni sono
"interne" al motore di Access, ma ripeto potri sbagliarmi ed in effetti
Danilo ha appena scritto che almeno la iif funziona...
Cinzia

avete qualche idea su come posso ovviare al problema
se creo una query con il dsum e la richiamo da vb??
si può fare??


 si può fare??
Da dove arriva DSum?
Per le funzioni definite in Access (che se non sbaglio puoi anche definirne
di personalizzate) basta richiamarle come tali, quindi senza virgolette che
identificano invece una stringa.
Ciao
-- 
NeoDataType : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 --
Ciao Fabrizio,
ho pensato una possibile soluzione per evitare l'uso di DSUM,
sostanzialmente si tratta di fare 2 query ed unirle con una Inner Join
in questo modo:
Query1
Select ID, IMPORTO, Sum(IIF(Segno='C',-1,1)*Importo) as Tot
From Storico Group By Id, Importo
Having Sum(IIF(Segno='C',-1,1)*Importo) =0
Query Finale
SELECT [ID], [Importo], [Segno], [ID_Part]
FROM Storico INNER JOIN Query1 on Storico.ID = Query1.ID and Storico.Importo
= Query1.Importo
Verifica prima in Access che questa soluzione genera gli stessi risultati
della tua fuzionante (non ho dati su cui testare la bontà dell'ipotesi)
Facci sapere!
Cinzia