Problema Query !

venerdì 08 giugno 2007 - 17.42

diacono_frost Profilo | Newbie

Ciao a tutti ho un problema con una query in :

utilizzando query sql tutto ok mentre

in vb nn mi restituisce nesun record (anche se ce ne sono 2)
la query è la seguente :

SQL

SELECT MGLT_Codice
FROM MG_Lotti
WHERE MGLT_MGAA_ID = 36308

Vb

RsLot.Open " SELECT MGLT_Codice" & _
" FROM MG_Lotti" & _ " WHERE MGLT_MGAA_ID=" & CNumDB(NumArticolo), ConnIdeale, adOpenForwardOnly, adLockReadOnly

Il recorset è stato dichiarato e la connessione pure...

nn so dove sbatter la testa..
qualcuno può aiutarmi???

Intanto Grazie


saluti !

alx_81 Profilo | Guru

>Ciao a tutti
Ciao!

>ho un problema con una query in :
>utilizzando query sql tutto ok mentre
>
>in vb nn mi restituisce nesun record (anche se ce ne sono 2)
>la query è la seguente :
>
>SQL
>
>SELECT MGLT_Codice
>FROM MG_Lotti
>WHERE MGLT_MGAA_ID = 36308
>
>Vb
>
>RsLot.Open " SELECT MGLT_Codice" & _
>" FROM MG_Lotti" & _ " WHERE MGLT_MGAA_ID=" & CNumDB(NumArticolo),
>ConnIdeale, adOpenForwardOnly, adLockReadOnly
>
>Il recorset è stato dichiarato e la connessione pure...

Hai fatto un bel controllo per capire se NumArticolo è correttamente valorizzato?
E se lo è, controlla anche che la funzione CNumDB ti ritorni l'id che tiserve..
>
>nn so dove sbatter la testa..
>qualcuno può aiutarmi???
Prova a fare quei controlli, perchè di più non posso dirti.
>
>Intanto Grazie
di nulla!
>
>
>saluti !
>

Alx81 =)

http://blogs.dotnethell.it/suxstellino

diacono_frost Profilo | Newbie

Purtoppo ho controllato e ricontrollato tutto più volte...

Grazie lo stesso per l'interessamento !

SaluTi

lbenaglia Profilo | Guru

>SQL
>
>SELECT MGLT_Codice
>FROM MG_Lotti
>WHERE MGLT_MGAA_ID = 36308
>
>Vb
>
>RsLot.Open " SELECT MGLT_Codice" & _
>" FROM MG_Lotti" & _ " WHERE MGLT_MGAA_ID=" & CNumDB(NumArticolo),
>ConnIdeale, adOpenForwardOnly, adLockReadOnly

Ciao diacono_frost,

Cosa fa la funzione CNumDB()?
Hai verificato il comando SQL generato da quella concatenazione? Se lo esegui direttamente sul DBMS (che hai dimenticato di dirci qual è) restituisce il set di righe desiderato?
La connessione ConnIdeale è aperta?
Stai utilizzando un cursore Forward Only, pertanto la proprietà Count ti restituirà -1 dato che "hai in canna" solo la riga corrente.
Per verificare se il recordset è davvero vuoto, devi testare che le proprietà BOF ed EOF siano entrambe a True.

>Intanto Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

diacono_frost Profilo | Newbie

Il DBMS è sql server, la connessione è aperta ela fubnzione cnumdb trasforama la variabile in numero..

Buuu
Proverò a prendere un altra strada..

Grazie a tutti !

lbenaglia Profilo | Guru

>Il DBMS è sql server, la connessione è aperta ela fubnzione cnumdb
>trasforama la variabile in numero..
Nella composizione del comando SQL stai concatenando STRINGHE NON NUMERI!
Quella funzione è completamente inutile e anzi, comporta un doppio cast (da stringa a numero esplicito e da numero a stringa implicito).
Inoltre dato che utilizzi SQL Server dovtresti incapsulare tutte le query in stored procedure (eventualmente parametriche).
Tramite l'oggetto Command sarai in grado di richiamarle in modo estremamente sicuro ed efficiente, evitando tra l'altro tutti i rischi che derivano dal Dynamic SQL.

>Grazie a tutti !
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

diacono_frost Profilo | Newbie

Tutto risolto,
nn so come, in pratica ho cancellato la query e l'ho riscritta pari pari, ora funzia

booooo

cmq grazie per l'interessamento e l'aiuto..

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5