Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Db Access e VB.Net
giovedì 17 giugno 2004 - 18.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
angelo81
Profilo
| Newbie
12
messaggi | Data Invio:
gio 17 giu 2004 - 18:47
Ho un piccolo problema ..Praticamente ho una funzione a cui passo una stringa (comando sql) e tale funzione mi restituisce un datareader con i record che il comando sql mi ha filtrato.
Public Function Ricerca(ByVal sql As String) As OleDbDataReader
Try
Me.Apri()
Dim cmd As New OleDbCommand()
cmd.Connection = Me.Connessione
cmd.CommandText = sql
Ricerca = cmd.ExecuteReader()
Me.Chiudi()
Catch ex As OleDbException 'Se si verifica un errore...
MsgBox("RICERCA FALLITA:" + ex.Message)
End
End Try
End Function
Se scrivo il codice chiamante in questo modo:
Dim Ricerca2 As OleDbDataReader
Dim sql As String 'Variabile usata per creare la query sql
sql = "SELECT * FROM nometab
Ricerca2 = Database.Ricerca(sql) la funzione sopra riportata
While Ricerca2.Read() Errore!! Dice che il dataread è chiuso
leggo i dati che mi interessano
End While
Ricerca2.Close()
Il problema è che mi dice che il datareader è chiuso.
Altra cosa come si fa per calcolare quanti record sono presenti nel dataread?
E come si gestiscono gli errori dell oledbexception? (con un case all interno di catch e try ma dove si trova il numero dell errore che viene generato?). Secondo voi è una regola di programmazione validà la mia nel senso
È giusto che ce un form che riceve input tramite textbox e lo invia ad una funzione che ricerca qualcosa e restituisce tutti i record tramite un dataread?
Ultima cosa per gestire un db di access cosa usate? ADODB o OLEDB o cosaltro?
Saluti Angelo
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
ven 18 giu 2004 - 11:06
Allora per utilizzare l'ado.net e il datareader devi fare in questo modo:
Posto esempio codice:
Dim db as New OledbConnection
apri il database
Dim cmd As New OledbCommand
Dim dr as OledbDataReader
Dim sql As String
sql = "SELECT * FROM nome_tabella"
cmd = New OledbCommand(sql, db)
dr = cmd.ExecuteReader
While dr.Read
esegui le procedure che devi fare
End While
dr.Close()
cmd.Connection.close()
Ciao
Fabio
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
ven 18 giu 2004 - 11:09
Per quanto riguarda l'utilizzo di access, purtroppo da parte mia non te lo consiglio, è un database molto limitato, io personalmente utilizzo Mysql e in certi casi MSSQL Server 2000.
Comunque per quanto riguarda access, nel vb net devi utilizzare il provider OleDb.
Ciao
Fabio
angelo81
Profilo
| Newbie
12
messaggi | Data Invio:
mer 23 giu 2004 - 22:55
Grazie per aver risposto...Ho risolto il problema del datareader (il problema cmq era passare il datareader ad una funzione e non farlo funzionare all' interno di un'altra), per quato riguarda la conta dei record?..possibile che l' unico modo è mettere un contatore all' interno del ciclo while....con dao si usava recordcounts che ora non mi ritrovo...e gli errori?...come posso gestirli?..grazie anticipatamente :-)
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
ven 25 giu 2004 - 12:32
La proprietà err.Number esiste in vb net
io la utilizzo nelle procedure
try
codice......
Catch
Msgbox(Err.Number)
End Try
Ciao
Fabio
angelo81
Profilo
| Newbie
12
messaggi | Data Invio:
mar 20 lug 2004 - 18:22
Nell' evento KeyPress di un textbox voglio controllare il carattere digitato e se non è quello che voglio devo fare in modo che non lo scrive, il problema è come fare per annullare il carattere digitato? in vb5 bastava keyascii=0 ma ora la proprieta è di sola lettura.
Saluti Angelo
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mar 20 lug 2004 - 18:44
In questo esempio nel campo textbox puoi solo scrivere il carattere "a"
Dim cha As Char = e.KeyChar
If cha = "a" Then
Else
e.Handled = True
End If
Questo ti dovrebbe aiutare
Ciao
Fabio
angelo81
Profilo
| Newbie
12
messaggi | Data Invio:
gio 22 lug 2004 - 12:01
Grazie Fabio per laiuto del keypress, sono riuscito a risolvere.
Ora ho un altro problema:-), ho una funzione che carica degli items su un combobox dichiarato tramite codice, come qui sotto:
Function Carica() As ComboBox
Dim ComboApp As New ComboBox()
ComboApp.items.add (TESTO1)
Return (ComboApp)
End Function
Dopo ho un form con su disegnato un combobox che devo riempire con gli items che elabora la funzione.
(Codice chimante)
ComboBox1=NomeClasse.Carica() 'associazione
Il problema (stranissimo) è che, dopo che associo il combobox alla funzione, nel combobox disegnato sul form non esce l item TESTO1 (lo da vuoto come se non avesse associato niente) ma la cosa strana è che se dopo averlo associato scrivo:
Msgbox (combobox1.item(0))
Nel msgbox esce scritto Testo1
Cè di piu dopo che ho associato il combo alla funzione, il combo è come morto:-), nel senso che se carico un item dal codice chimante non lo visualizza.
Io penso che ci sia qualche proprietà del combobox1 da cambiare, ma quale?
Io le ho provate tutte da combobox.refresh al combobox.name per impostargli lo stesso name del combobox della funzione, ma niente.
O forse ho sbagliato ad associare con loperatore uguale ci vuole un operatore apposito per i controlli.
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
gio 22 lug 2004 - 13:00
E' strano, ma ora su due piedi non saprei cosa dirti, dovrei vedere il progetto e capire un pò tutto.
Solo ti volevo chiedere, il teso che devi inserire nella combobox è fisso oppure deriva da una tabella di database?Perchè se sono fissi puoi inserire i dati direttamente dalla proprietà Items della combo.
Ciao
Fabio
angelo81
Profilo
| Newbie
12
messaggi | Data Invio:
gio 22 lug 2004 - 13:47
no deriva tutto da una tabella di database.
angelo81
Profilo
| Newbie
12
messaggi | Data Invio:
gio 22 lug 2004 - 14:31
Ho risolto:-)..Praticamente da come ho capito io, sicuramente ho capito male, comunque penso che chiedevo al vb di duplicare le risorse, nel senso che creavo 2 combo uno disegnato e uno a livello di codice e passavo quello disegnato nel form alla funzione che me ne restituiva un secondo e lo riassociavo al primo...quindi creavo 2 controlli per aggiornarne uno, invece ora ho risolto passando alla funzione direttamente il combobox da modificare e non restituisco + il controllo come prima.
Ora ho dichiarato la funzione cosi:
Function Carica (ComboBox as ComboBox)
e passo direttamente il controllo alla funzione che lo elabora.
Non ci ho capito + di tanto pero' penso che il ragionamento sia una cosa del genere.
Ciao e grazie ancora per la disponibilità.
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
gio 22 lug 2004 - 16:52
di nulla
ciao
Torna su
Stanze Forum
Elenco Threads
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 !