OVH Cloud OVH Cloud

Probleme lecture champs BDD

1 réponse
Avatar
Fred
Bonjour,

je ne comprends pas pourqoi mon code ne fonctionne pas quand j'essaies de
recuperer le contenu d'un champ vide dans ma tables Access ...

'=== Description de la table

ID_Bloc ( INT numéo Auto clé primaire)
Code_Bloc (MEMO)
HREF_Image_Bloc ( Texte 50)
IMG_Bloc ( Texte 50)
Type_Paragraphe ( Texte 50)

'=== Fin de decription

Voici un morceau de mon code , merci de votre aide

ID_Bloc.Value = Request("ID_bloc")
Dim ObjConnection As OleDbConnection
Dim CS As String
CS = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath(".\databases\blocs.mdb") & " ;User Id=admin;Password=;"

ObjConnection = New OleDbConnection(CS)
ObjConnection.Open()
Dim strSQL As String

strSQL = "SELECT * FROM Blocs WHERE Id_Bloc=" & Request("ID_Bloc")

Dim SQL As New OleDBCommand(strSQL, ObjConnection)

Dim liste As OleDBDataReader = SQL.ExecuteReader()

Try
ID_Bloc.Value = Request("ID_Bloc")
If liste("HREF_Image_Bloc") <> Nothing Then
HREF_Image.Text =
liste.GetString(liste.GetOrdinal("HREF_Image_Bloc"))
End If
HREF_Image.Text = liste("HREF_Image_Bloc")


Type_Paragraphe.Items.FindByValue(liste.GetString(liste.GetOrdinal("IMG_Position_Bloc"))).Selected = True
IMG_Bloc_Hidden.Value =
liste.GetString(liste.GetOrdinal("IMG_Bloc"))
IMG_Bloc.ImageUrl =
Liste.GetString(Liste.GetOrdinal("IMG_Bloc"))

Catch ex As Exception
Response.Write(ex.ToString)
Finally
ObjConnection.Close()
End Try

TOUS MES CHAMPS SONT DES CHAMPS "TEXTE" SAUF LE CHAMP : Code_Bloc
qui contient du code HTML encodé avec Server.htmlEncode() et qui se trouve
dans un champ MEMO

j'obtiens donc fatalement une erreur meme si j'utilise :

liste.GetString(liste.GetOrdinal("HREF_Image_Bloc"))
ou
liste.GetString(liste.GetOrdinal("Code_Bloc"))

voila l'erreur :

System.InvalidOperationException: Aucune donnée n'existe pour la
ligne/colonne. at System.Data.OleDb.OleDbDataReader.DoValueCheck(Int32
ordinal) at System.Data.OleDb.OleDbDataReader.GetValue(Int32 ordinal) at
System.Data.OleDb.OleDbDataReader.get_Item(String name) at
Applis.Edition.Page_Load(Object sender, EventArgs e) in
c:\inetpub\wwwroot\Applis\Edition.aspx.vb:line 76

Ceci dans le cas d'un champ vide ...

Mais quand tous les champs sont remplis , ca fonctionne très bien ..

Merci de Votre aide

1 réponse

Avatar
Ken Cox [Microsoft MVP]
Salut,

Au lieu de

If liste("HREF_Image_Bloc") <> Nothing

il te faut

if not IsDBNull(liste("HREF_Image_Bloc") )

http://msdn.microsoft.com/library/en-us/vblr7/html/vafctisnull.asp?frame=true

Est-ce que cela marche?

Ken
Microsoft MVP [ASP.NET]
Toronto

"Fred" wrote in message
news:
Bonjour,

je ne comprends pas pourqoi mon code ne fonctionne pas quand j'essaies de
recuperer le contenu d'un champ vide dans ma tables Access ...

'=== Description de la table

ID_Bloc ( INT numéo Auto clé primaire)
Code_Bloc (MEMO)
HREF_Image_Bloc ( Texte 50)
IMG_Bloc ( Texte 50)
Type_Paragraphe ( Texte 50)

'=== Fin de decription

Voici un morceau de mon code , merci de votre aide

ID_Bloc.Value = Request("ID_bloc")
Dim ObjConnection As OleDbConnection
Dim CS As String
CS = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath(".databasesblocs.mdb") & " ;User Id­min;Password=;"

ObjConnection = New OleDbConnection(CS)
ObjConnection.Open()
Dim strSQL As String

strSQL = "SELECT * FROM Blocs WHERE Id_Bloc=" &
Request("ID_Bloc")

Dim SQL As New OleDBCommand(strSQL, ObjConnection)

Dim liste As OleDBDataReader = SQL.ExecuteReader()

Try
ID_Bloc.Value = Request("ID_Bloc")
If liste("HREF_Image_Bloc") <> Nothing Then
HREF_Image.Text > liste.GetString(liste.GetOrdinal("HREF_Image_Bloc"))
End If
HREF_Image.Text = liste("HREF_Image_Bloc")


Type_Paragraphe.Items.FindByValue(liste.GetString(liste.GetOrdinal("IMG_Position_Bloc"))).Selected
= True
IMG_Bloc_Hidden.Value > liste.GetString(liste.GetOrdinal("IMG_Bloc"))
IMG_Bloc.ImageUrl > Liste.GetString(Liste.GetOrdinal("IMG_Bloc"))

Catch ex As Exception
Response.Write(ex.ToString)
Finally
ObjConnection.Close()
End Try

TOUS MES CHAMPS SONT DES CHAMPS "TEXTE" SAUF LE CHAMP : Code_Bloc
qui contient du code HTML encodé avec Server.htmlEncode() et qui se trouve
dans un champ MEMO

j'obtiens donc fatalement une erreur meme si j'utilise :

liste.GetString(liste.GetOrdinal("HREF_Image_Bloc"))
ou
liste.GetString(liste.GetOrdinal("Code_Bloc"))

voila l'erreur :

System.InvalidOperationException: Aucune donnée n'existe pour la
ligne/colonne. at System.Data.OleDb.OleDbDataReader.DoValueCheck(Int32
ordinal) at System.Data.OleDb.OleDbDataReader.GetValue(Int32 ordinal) at
System.Data.OleDb.OleDbDataReader.get_Item(String name) at
Applis.Edition.Page_Load(Object sender, EventArgs e) in
c:inetpubwwwrootApplisEdition.aspx.vb:line 76

Ceci dans le cas d'un champ vide ...

Mais quand tous les champs sont remplis , ca fonctionne très bien ..

Merci de Votre aide