Bonjour,

Les logiciels utilisés sont :

- Windows 7 Professionnel SP1
- SQL Server 2008 R2
- Visual Studio 2010 Professional

Je voudrais afficher dans une DataGridView de mon appli VB les colonnes issues de la requête suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 SELECT LOG_ID, LOG_TS, LOG_DATETIME, LOG_APPLICATION FROM LOG_IMPORT_CSV
Les types sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
[LOG_ID] [bigint] IDENTITY(1,1) NOT NULL, 
[LOG_TS] [timestamp] NOT NULL, 
[LOG_DATETIME] [datetime] NOT NULL, 
[LOG_APPLICATION] [varchar](50) NULL
Si je ne mets pas le champ LOG_TS, pas de souci. Mais si j'inclus ce champ de type timestamp dans ma requête, alors j'obtiens ce message abscons :

"The following exception occurred in the DataGridView:

System.ArgumentException: Parameter is not valid.

at System.Drawing.Image.FromStream(Stream stream, Boolean
useEmbeddedColorManagement, Boolean validateImageData)

at System.Drawing.ImageConverter.ConvertFrom(ITypeDescriptorContext
context, CultureInfo culture, Object value)

at System.Windows.Forms.Formatter.FormatObjectInternal(Object value,
Type targetType, TypeConverter sourceConverter, TypeConverter
targetConverter, String formatString, IFormatProvider formatInfo, Object
formattedNullValue)

at System.Windows.Forms.Formatter.FormatObject(Object value, Type
targetType, TypeConverter sourceConverter, TypeConverter targetConverter,
String formatString, IFormatProvider formatInfo, Object formattedNullValue,
Object dataSourceNullValue)

at System.Windows.Forms.DataGridViewCell.GetFormattedValue(Object value,
Int32 rowIndex, DataGridViewCellStyle& cellStyle, TypeConverter
valueTypeConverter, TypeConverter formattedValueTypeConverter,
DataGridViewDataErrorContexts context)"

J'ai essayé diverses conversion de type, que ce soit au niveau SQL (avec CAST ou CONVERT) ou au niveau VB (ToString, BitConverter, ...) sans aucun succès.

Pour info voici mon code VB.NET (du moins les parties concernées) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
Private WithEvents bindingSource1 As New BindingSource() 
 
Me.DataGridView1.DataSource = Me.bindingSource1 
 
-- Création de ma connexion w_cnx 
-- w_sql est ma requete SQL 
 
Dim command1 As New OleDbCommand(w_sql, w_cnx) 
Dim reader As OleDbDataReader 
reader = command1.ExecuteReader() 
 
Dim table As New DataTable() 
table.Load(reader) 
table.Locale = System.Globalization.CultureInfo.InvariantCulture 
 
Me.bindingSource1.DataSource = table
Mais je ne pense pas que le code VB soit en cause puisque tout fonctionne bien si j'enlève le champs LOG_TS de ma requête

Je pense qu'il s'agit plus d'un problème de traitement d'un champ binaire?

Merci de votre aide