Record inesistente

martedì 05 febbraio 2008 - 20.22

albedo Profilo | Junior Member

Ciao a tutti
Spero vogliate spiegarmi come risolvere un probleme che per voi sarà banale, ma per uno alle prime armi come me è difficile da suoerare, dunque:

Ho una tabella ARTICOLI con due campi: ID_ART e ARTICOLO
In questa tabella ci sono 50 record

ID_ART | ARTICOLO

1 | Pinze
2 | Martello
3 | Chiodi
4 | Vite
5 | Giravite

Ho una datagridview in cui, digitando un valore di ID_ART mi riporta il corrispondente articolo in un'altra cella della datagridview.
ora vorrei fare in modo che se si digita un codice cui non corrisponde alcun articolo (adesempio, 6) compaia un msgbox che mi avvisi.
Ho ustao questo codice, ma non funziona:

sql = "select ARTICOLO from ARTICOLI where ID_ART=?"
Dim cmd As New OleDb.OleDbCommand(sql, cn)
cmd.Parameters.AddWithValue("ID_ART", Griglia_Vendite.Item(3, rw).Value)
dr = cmd.ExecuteReader
Do While dr.Read
If dr.HasRows Then
If dr.Item(1) Is Nothing Then
MsgBox("???")
Else
Griglia_Vendite.Item(4, rw).Value = dr.Item("ARTICOLO")
End If
End If
Loop
dr.Close()

Grazie

alx_81 Profilo | Guru

>Ciao a tutti
Ciao e benvenuto su DotNetHell!

Secondo me sbagli l'utilizzo della proprietà HasRows del datareader.
A rigor di logica la proprietà dovrebbe essere false se la query non ti torna nulla, quindi se l'ID_ART non eiste in tabella, HasRows dovrebbe essere a false.
Quindi io agirei proprio su quella, una cosa del tipo:

Eseguo la query e valorizzo il datareader
Controllo la proprietà HasRows
Se è true ciclo il datareader e eseguo le normali operazioni
Altrimenti ritorno il messaggio.

Fai attenzione però che parlare di Messagebox in asp.net non è così corretto. Lato server al massimo tu puoi generare uno script (che poi verrà eseguito lato client) oppure puoi scrivere sulla pagina web un messaggio di errore (Response.Write). Se fossi in te, visto che comunque devi eseguire l'interrogazione al db sul server, seguirei proprio la seconda strada. Una bella response.write del messaggio di errore.

>
>Grazie
di nulla!
Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

albedo Profilo | Junior Member

Grazie davvero di cuore per la risposta.
Ho provato a fare come mi hai suggerito, ma lko stesso non funziona.

finora, al massimo sono riuscito ad ottenere una "IndexOutOfRangeException"
Hai ragione a dire di fare attenzione a parlare di msgbox in ASP.NET.... ma ... ehm credo di aver sbagliato sezxione, infatti sto andando a ripostare la domanda nella sezione appropriata.

Grazie di nuovo.

Ciao
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