|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 5245
|
[VB.NET] Gestire InvalidOperationException
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2006
Messaggi: 335
|
quel pulsante si trova sullo stesso form? come hai istanziato il form? visualizzandolo semplicemente (.show) oppure creando un oggetto, ad esempio:
dim FRM_Main as new frmxxxxx application.run(FRM_Main) oppure dim FRM_Main as new frmxxxxx FRM_Main.show rimango in attesa |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Questo è il modo per gestire le eccezioni :
Codice:
try 'Codice che potrebbe generare un errore. Catch 'Codice da eseguire in caso di errore. Finally 'Codice da eseguire sia che si sia verificato un errore nel 'blocco try sia che non ci siano stati problemi. End try Codice:
try
Dim A As Byte = 100
Dim B As Byte = A * A
Catch ex As OverflowException
MsgBox("Si è verificato un errore: " & ex.Message)
End try
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 5245
|
si, il pulsante si trova sullo stesso form
Cmq non effettuo nessun Form.show in quanto il tutto è costituito da un solo form |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 5245
|
qwerty86...fammi capire una cosa..
Allora il debug mi comunica che c'è InvalidOperationException non gestita e mi indica come riferimento la stringa che ti ho riportato mediante immagine. Nella fattispecie Codice:
btnApagarImagem.Enabled = False Codice:
Ligacao2.Open()
Sql = "Select imagem From capas where id_imagem=" & idRegisto
Comando2 = New OleDbCommand(Sql, Ligacao2)
Comando2.CommandType = CommandType.Text
RS2 = Comando2.ExecuteReader
RS2.Read()
If RS2.HasRows Then
Dim bytes() As Byte
Dim imgStream As MemoryStream
bytes = CType(RS2("imagem"), Byte())
imgStream = New MemoryStream(bytes)
picImagem.Image = Image.FromStream(imgStream)
btnApagarImagem.Enabled = False
btnImprimir.Enabled = False
btnGuardarFicheiro.Enabled = False
Else
picImagem.Image = Image.FromFile(Application.StartupPath & "\no_picture.jpg", True)
btnApagarImagem.Enabled = True
btnImprimir.Enabled = True
btnGuardarFicheiro.Enabled = True
End If
RS2.Close()
Ligacao2.Close()
End Sub
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2006
Messaggi: 335
|
mmm e' un po' strano che ti dia quell'errore, in fondo stai solo abilitando un pulsante.. scusa la domanda banale: il pulsante sul form e' gia' stato creato vero? in debug riesci a vedere le proprieta' del pulstante?
cmq visto che hai un solo form ti conviene creare un modulo bas e lanciare il form da questo, almeno riesci a gestire gli errori a livello generale... Sub main() Try Dim FRM_Main as New frmcomesichiama Application.Run(FRM_Main) Catch ex As Exception MessageBox.Show("FATAL ERROR - " & ex.message, "mioprg", MessageBoxButtons.OK) 'eventualmente qui puoi rilanciare in automatico l'applicazione Finally Shell(Application.ExecutablePath) End Try End Sub nel progetto imposti come startup la sub main di questo modulo. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Prova come ha detto Luc72
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 5245
|
Luc72...scusami ma non ti seguo...puoi spiegarmi meglio ?
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
btnApagarImagem.Enabled = False
prova a commentarlo e vedere se è solo lui che da problemi o anche gli altri
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 5245
|
ok qwerty86....adesso provo
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 5245
|
sembra strano, ma commentando
'btnApagarImagem.Enabled = False 'btnImprimir.Enabled = False 'btnGuardarFicheiro.Enabled = False sembra andrare tranquillamente |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
perchè devi disabilitare questi pulsanti ?
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 5245
|
sempre per il fatto che se fanno già una cosa non devo più farla fare...
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Quote:
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 5245
|
ok...grazie di tutto
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2000
Città: Provincia di Parma
Messaggi: 724
|
Sembra che la lettura del datareader avvenga in un thread diverso da quello dell'interfaccia, e l'architettura di Windows impone che il solo il thread associato all'interfaccia possa accedere ai controlli. Hai abilitato le connessioni asincrone sulla connection string?
Ah, occhio alla SQL injection in questo codice: Codice:
Sql = "Select imagem From capas where id_imagem=" & idRegisto
__________________
My Pc: Case Enermax Chakra - PSU Corsair HX520 - Gigabyte P35-DS3R - Core2 Duo E6550 - 6 Gb RAM Geil PC800 - 2x WD Caviar SE 320Gb (Raid1) - Xfx GeForce 8600Gt - Master Pioneer DVR111D - Samsung SM T220 - S.O. Windows 7 Ultimate x64 SP1 My blog: http://blogs.ugidotnet.org/alby |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 5245
|
Quote:
Cosa devo/posso modificare per renderlo corretto?? Inoltre non ho mai capito il fatto del SQL injection Puoi spiergarmi anche questo??? Grazie |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jan 2000
Città: Provincia di Parma
Messaggi: 724
|
E' un argomento un po' complesso da spiegare in un post... Guardati la documentazione della proprietà InvokeRequired su MSDN.
Per quanto riguarda la SQL Injection: http://www.algonet.se/~sommar/dynamic_sql.html Ciao
__________________
My Pc: Case Enermax Chakra - PSU Corsair HX520 - Gigabyte P35-DS3R - Core2 Duo E6550 - 6 Gb RAM Geil PC800 - 2x WD Caviar SE 320Gb (Raid1) - Xfx GeForce 8600Gt - Master Pioneer DVR111D - Samsung SM T220 - S.O. Windows 7 Ultimate x64 SP1 My blog: http://blogs.ugidotnet.org/alby |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 5245
|
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Sep 2006
Messaggi: 335
|
Quote:
Riguardo all'sql injection la variabile idRegisto NON la devi passare nuda e cruda all'oggetto sql... altrimenti qualcuno un po' smaliziato potrebbe cancellarti in un attimo tutto il db... la prima cosa da fare e' un bel replace degli apici con i doppi apici .replace("'","''"), cmq il discorso e' troppo lungo.. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:30.






















