Erore Query in Asp.net

giovedì 02 marzo 2006 - 12.04

Pongo Profilo | Senior Member

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Ho un problema che non capisco.
Qundo lancio questa quary da asp.net mi dice che non rieesce a trovare la colonna Sistema_Operativo. Questa colonna è nella tabella TB_sistemi_Operativi, mentre tutti gli altri campi sono nella tabella TB_InfoMarketing.

Strutturando la query in SQL Query Analyzer funziona perfettamente.

Ho provato a inserire gli indentificatori dbo.TB_Sistemi_Operativi davanti al nome della colonna, ma in asp.net ancora non fuziona mentre in SQL Query Analyzer funziona correttamente.

Perchè sta roba?


Grazie! ^_^

lbenaglia Profilo | Guru

>Qundo lancio questa quary da asp.net mi dice che non rieesce
>a trovare la colonna Sistema_Operativo. Questa colonna è nella
>tabella TB_sistemi_Operativi, mentre tutti gli altri campi sono
>nella tabella TB_InfoMarketing.
>
>Strutturando la query in SQL Query Analyzer funziona perfettamente.

Ciao Pongo,

prima di tutto ti suggerisco di ricrivere la query in modo più chiaro, utilizzando l'operatore JOIN:

SELECT Sistema_Operativo , ID_Info , Numero_Pc , Numero_Stampanti , Numero_Terminali , Tipo_Rete , Posta_Elettronica , Software_Standard , Fornitore , Implementazioni , Assistenza_Tecnica , Corsi , Preferenze_Corsi , Consumo_Energia , ID_Sistema_operativo_fk FROM TB_InfoMarketing AS IM JOIN TB_Sistemi_Operativi AS SO ON IM.ID_Sistema_operativo_fk = SO.id_sistema_operativo WHERE ID_Cliente_FK LIKE '"+ Session["ID_cliente"].ToString() +"';

Per rispondere alla tua domanda dovresti postare i comandi DDL per costruire le due tabelle (CREATE TABLE...).
A prima vista la query sembra corretta.

>Grazie! ^_^
Prego.

Ciao!

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

Pongo Profilo | Senior Member

In effetti per prigrizia non metto le join e mi limito all'uguaglianza tra chiavi esterne e chiavi primarie cui fanno riferimento.

La query in Sql analyzer funziona perfettamente.

Poi quando torno in ufficio do un'occhiata al codice per la creazione delle tabelle e vediamo se rieco/riusciamo a cavarne qualcosa.

Scappo a mangiare! ^_^

Grazie e a dopo!

Pongo Profilo | Senior Member

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Non riesco prorpio a capire: mi da un errore prima di "Join". Tra parentesi preso dalla disperazione ho fato un sqldataadapter e ho copiato la query di select. Eppure me la da sbagliata.

Se non uso la join mi dice che quando prova a popolare il reader con il risultato della query non riesce a trovare la tabella.

Lo script di creazione della tabella è:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

lbenaglia Profilo | Guru

>Lo script di creazione della tabella è:
>
>if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TB_Sistemi_Operativi]')
>and OBJECTPROPERTY(id, N'IsUserTable') = 1)
>drop table [dbo].[TB_Sistemi_Operativi]
>GO
>
>CREATE TABLE [dbo].[TB_Sistemi_Operativi] (
> [ID_Sistema_Operativo] [numeric](18, 0) IDENTITY (1, 1) NOT
>NULL ,
> [Sistema_Operativo] [varchar] (70) COLLATE Latin1_General_CI_AS
>NULL
>) ON [PRIMARY]
>GO


E l'altra?

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

Pongo Profilo | Senior Member

Ecco ho appena aasistito ad un miracolo.

Adesso funziona.

Ho preso la query l'ho copiata in queryanalyzer e funzionava logicamente.

L'ho ricopiata da query analyzer e l'ho incollata dentro la pagina asp.net.

Funziona.

Non chiedetemi il perchè o il percome.

lbenaglia Profilo | Guru

>Ho preso la query l'ho copiata in queryanalyzer e funzionava
>logicamente.
>
>L'ho ricopiata da query analyzer e l'ho incollata dentro la pagina
>asp.net.
>
>Funziona.
>
>Non chiedetemi il perchè o il percome.

Non te lo chiedo, ma sicuramente commettevi qualche errore di sintassi
Un consiglio: perché non incapsuli la tua query in una stored procedure parametrica?
Oltre ad ottenere indubbi vantaggi a livello prestazionale, di security (se implementata a dovere), ecc., andrai a separare fisicamente la web application dal DBMS utilizzato, quindi ad esempio potrai isolare eventuali errori senza impazzire come stai facendo ora.
Se in Query Analyzer la stored procedure funziona correttamente, in caso di errore stai certo che dovrai concentrare i tuoi sforzi lato ASP.NET.

Per richiamare la stored procedure utilizza la classe SqlCommand:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlCommandClassTopic.asp

In questi due post puoi leggere alcuni vantaggi nell'utilizzo delle stored procedure rispetto a "schiantare" nel codice una query SQL:
http://tinyurl.com/s662
http://tinyurl.com/s664

Ciao!

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

Pongo Profilo | Senior Member

Ci darò un'occhiata!

Per l'errore di sintassi non son prorpio riuscito a vederlo! ^_^

Comunque grazie!

Alla prossima!
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5