Collegarsi a DB Access .accdb via codice

giovedì 25 ottobre 2012 - 12.02
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  Access (.mdb)  |  Internet explorer 8.0  |  Javascript  |  VBScript

danielsan27 Profilo | Newbie

Salve,
non ridete x favore...essendo neofita di asp.net questa cosa x me nn e' x nulla banale...

ho creato una pagina nuova .aspx, dopo aver importato il system.data.oledb ho aperto le mie belle tag <script language....></script>..e dentro ci ho messo queste semplici righe....

1) Dim strconn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='c:\Users\administrator\documents\visual studio 2010\WebSites\NUOVATC\App_Data\ARCHIVIO.accdb';Persist Security Info=True"

2) Dim cn As New OleDbConnection(strconn)

3) cn.open()

in compilazione mi blocca subito e mi dice che alla riga 3 e' prevista una dichiarazione....mi dite cortesemnte dove sto sbagliando???? ...mi sento veramente impotente...in asp ero un signore...... :(

e se posso...magari mi postereste quelle 5-6 righe che ci volgiono per dargli in pasto un istruzione select??? grazie
mi scuso per l'incompetenza......

algraps Profilo | Junior Member

Ciao,
scusa la domanda: hai installato i driver per connettersi al database? Questi:
Office
2007 Office System Driver: Data Connectivity Components


Se si allora prova questo (Ti posto un pochino di codice per fare un po' di pulizia):
New web config inserisci questo:

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

Poi nel code behind della tua pagina nella load per esempio (poi puoi metterlo dove vuoi) inserisci:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Hai bisogno di questo namespace
Imports System.Data.OleDb

Fammi sapere.
Ciao
A.G.

danielsan27 Profilo | Newbie

niente ero nabbo io....scrivevo il codice dentro l'aspx...e non nel code behind....
ho fatto cosi e funziona tutto; ho usato una gridview in aspx chiamta clienti per verificare che funzionasse:

ecco il codice che ho nella page_load(): (ovviamente con il namespace system.oledb inserito in testa pagina...)
Dim dbconn As OleDbConnection
Dim sql As String
Dim dbcomm As OleDbCommand
Dim dbread As OleDbDataReader
dbconn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='c:\users\administrator\documents\visual studio 2010\Projects\WebApplication8\WebApplication8\App_Data\ARCHIVIO.accdb'")
dbconn.Open()
sql = "SELECT * FROM RESIDENTI"
dbcomm = New OleDbCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
clienti.DataSource = dbread
clienti.DataBind()
dbread.Close()
dbconn.Close()

adesso ..lo step successivo...come faccio a puntare al 1 record...a leggerne un campo e ad andar avanti fino a fine file?
in pratica devo scorrere tutto il datareader fino alla fine...verificare il contenuto di un campo ed eventualmente inserirlo in una label ad esempio...
esistono metodi tipo: .movenext, movefirst, .eof....direttamente sul datareader..o si usa un altra cosa????
Ringrazio :)

algraps Profilo | Junior Member

Dopo aver aperto il DataReader, usa queste linee:
If reader.HasRows Then Do While reader.Read() Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", reader.GetInt32(0), reader.GetString(1)) Loop Else Console.WriteLine("No rows returned.") End If reader.Close()

danielsan27 Profilo | Newbie

fatto....non succede nulla...
cosa dovrebbe fare di grazia ?
codice.....
.....
sql = "SELECT * FROM RESIDENTI"
dbcomm = New OleDbCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
If dbread.HasRows Then
Do While dbread.Read()
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", dbread.GetInt32(0), dbread.GetString(1))
Loop
Else
Console.WriteLine("No rows returned.")
End If

dbread.Close()

algraps Profilo | Junior Member

Ciao,
la domanda era di ciclare sul tuo datareader e poi lavorare su ogni record.
Quel pezzo di codice cicla sul datareader. Al posto del console.Writeln, devi inserire il tuo codice per "verificare il contenuto di un campo ed eventualmente inserirlo in una label ad esempio"

Quel codice scrive sulla console solamente il contenuto dei campi del tuo record. Non so come e' fatta la tua tabella e quindi ho messo una riga a caso.

Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", reader.GetInt32(0), reader.GetString(1))

Il reader.GetInt32(0) si aspetta un campo integer nella tabella nella posizione 0, il reader.GetString(1) si aspetta una stringa nella posizione 1 e cosi' via. La tabella residenti non la conosco quindi sei tu che devi mettere le giuste letture....

vbTab & "{0}" & vbTab & "{1}" non e' altro che una formattazione di stringa.. {0} e' un segnalibro suula stringa. Li andra a scrivere il contenuto di reader.GetInt32(0), etc.

Fammi sapere.
A.G.

danielsan27 Profilo | Newbie

grosso modo avevo capito...avevo gia risolto con reader("nomcampo")....
cmq la questione è che console.writeline non funziona...devo x caso abilitare qualche namespace???
e..visto che ci siamo...come si richiama a video una finestra di dialogo con messaggio ad hoc??

:(

algraps Profilo | Junior Member

Ciao,
ma la Console.Writeline di da un'errore o e' solo problema di visualizzazione? In debug passa nella Console.Writeline? Il risultato lo vedi nella finestra output di visual studio in debug. Essendo una pagina aspx, non verra' mai fuori un prompt di command.

Cosa intendi con "finestra di dialogo con messaggio ad hoc" ? Intendi un messagbox? Se un alert e' quello che intendi, allora guarda questi due links:

http://www.codeproject.com/Tips/370157/A-Windows-Form-like-MessageBox-for-ASP-NET-Website
http://www.sparkinweb.com/blog/2012/04/07/generare-un-alert-message-box-aspnet/

Ciao
A.G.

danielsan27 Profilo | Newbie

sisi una messagebox...cmq pure l'alert nn e' male...
riguardo alla console.writeline...lanciando il programma nn accade nulla nella mia form...
ma forse leggendo quel che scrivi..mi pare di capire sia normale..in quanto e' una cosa che vien fuori solo nel debug...o no?

algraps Profilo | Junior Member

>sisi una messagebox...cmq pure l'alert nn e' male...
In Asp.net non hai le messagebox ma puoi simularle con l'alert

>riguardo alla console.writeline...lanciando il programma nn accade
>nulla nella mia form...
Ma e' una form o una pagina web?

>ma forse leggendo quel che scrivi..mi pare di capire sia normale..in
>quanto e' una cosa che vien fuori solo nel debug...o no?
>
Le Console.Writeline la visualizzi dalla finestra di Output in debug. Da Web e da winform (no Debug) non visualizzi nulla .

Ciao
A.G.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5