VB - Lire une table Microsoft Access avec linq
Bonjour à tous,
Comme je débute avec Visual Studio 2013 (version gratuite, merci à Microsoft) et en Visual Basic, il y a fort à parier que j'ai "oublié" pleins de trucs à faire :oops:.
J'ai bien entendu une version toute légale de Microsoft Office 2013 incluant Microsoft Access (si, si sans rire) .
Accessoirement je suis sous Windows 8 (et là pas merci du tout à Microsoft), mais à mon humble avis ça ne change rien au problème.
J'ai une base Microsoft Access 2013 de nom "sagas.acdb" qui est incluse dans mon projet.
Dans cette base, il y a une table de nom "Sagas" qui comporte deux champs:
- "IndexSaga" de type long (numéroautomatique)
- "NomSaga" de type string (texte court)
J'essaye tout simplement de lire les trois enregistrements de cette table.
J'ai donc généré le code ci-dessous qui, vous vous en doutez bien, ne fait pas exactement ce que j'en attendais :calim2:
En fait il semblerait que MesEnreg soit vide au moment de l'exécution :aie:
Y-aurait-il une âme charitable qui pourrait m'aider à sortir de ma situation délicate et corriger quelque peu mon code déplorable?
D'avance merci pour votre aide
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Private Sub test_database()
Dim MaBase As New SagasDataSet
Dim MaSaga As String
Dim MonIndex As Long
Dim MesEnreg = From p
In MaBase.Sagas
Select p.NomSaga, p.IndexSaga
For Each Pp In MesEnreg
MaSaga = Pp.NomSaga
MonIndex = Pp.IndexSaga
MsgBox(MonIndex & " " & MaSaga)
Next Pp
End Sub |
Et voilà le code résultat
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
Public Class Saga
Property IndexSaga As Long
Property NomSaga As String
Sub New(i As Long, n As String)
IndexSaga = i
NomSaga = n
End Sub
End Class
Public Sub RécupèreLesSagas()
Dim MesSagas As List(Of saga) = New List(Of saga)
Dim MaRequete As String = "SELECT IndexSaga, NomSaga FROM Sagas"
Dim MaCnx As String = "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source =C:\Users\Alain\Desktop\Maharabata\@DATA\Sagas.accdb"
Using cn As New System.Data.OleDb.OleDbConnection(MaCnx), cmd As New System.Data.OleDb.OleDbCommand(MaRequete, cn)
Try
cn.Open()
Using reader As System.Data.OleDb.OleDbDataReader = cmd.ExecuteReader()
If reader.HasRows Then
Do While reader.Read()
MesSagas.Add(New Saga(reader.GetInt32(0), reader.GetString(1)))
Loop
Else
MessageBox.Show("Pas de lignes trouvées.")
End If
End Using
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Using
For Each MaSaga In From p In MesSagas Select p.IndexSaga, p.NomSaga
MessageBox.Show(MaSaga.IndexSaga & " " & MaSaga.NomSaga)
Next MaSaga
End Sub |