Ce qui marche avec les objet sql ne marcherais pas avec oledb? [Résolu]

l0r3nz1 221 Messages postés mercredi 20 février 2008Date d'inscription 17 mars 2012 Dernière intervention - 5 août 2008 à 15:18 - Dernière réponse : l0r3nz1 221 Messages postés mercredi 20 février 2008Date d'inscription 17 mars 2012 Dernière intervention
- 7 déc. 2009 à 12:25
J'avais une fonction qui marchais sur sql serveur, et pour la tester sur une base access, impossible! j'ai pourtant modifier les objets (sql -> oledb) et non à ni rien comprendre la chaine de connexion est pourtant ok puisque je me connecte mais mon adapter ne rempli pasle dataset???

VOICI LA FONCTION ACCESS AU DATASET DEFAILLANT






Public




Function recupereTable_access_inArray(ByVal bdd As String, ByVal table As String) As Array
Dim arrayvide(0)
Dim odt As New DataTable
Dim tabloRetour
Dim tailleTabloretour
Dim countFor
Dim theConnectionString
theConnectionString = Me.connectionACCESS(bdd)
Dim theQueryString
theQueryString = "SELECT * from " & table
Dim theOLEDBConnection As New OleDbConnection(theConnectionString)
Dim theOLEDBCommand As OleDbCommand = theOLEDBConnection.CreateCommand()
ReDim tabloRetour(0)
tailleTabloretour = -1
theOLEDBCommand.CommandText = theQueryString

Dim thedataset As Data.DataSet = New Data.DataSet
Dim theadapter As New OleDbDataAdapter()
Using connection As New OleDbConnection(Me.connectionACCESS(bdd))
Try
connection.Close()
Catch ex As Exception
End Try
Try
connection.Open()
Catch ex As Exception
recupereTable_access_inArray = arrayvide
connection.Close()
Exit Function
End Try
theadapter.SelectCommand = New OleDbCommand("select * from " & table, connection)
Try
theadapter.Fill(thedataset, table)
Catch ex As Exception
recupereTable_access_inArray = arrayvide
connection.Close()
Exit Function
End Try
odt = thedataset.Tables(table)
For countFor = 0 To odt.Rows.Count
tailleTabloretour = tailleTabloretour + 1
ReDim Preserve tabloRetour(tailleTabloretour)
tabloRetour(tailleTabloretour) = odt.Rows(0).ItemArray
Next

theOLEDBConnection.Close()
theOLEDBConnection = Nothing
theOLEDBCommand = Nothing
connection.Close()
End Using
recupereTable_access_inArray = tabloRetour
End Function

ET LA MEME POUR SQL SERVER MAIS QUI MARCHE





Public



Function recupereTableinArray(ByVal bdd As String, ByVal table As String) As Array

Dim arrayvide(0)

Dim odt As New DataTable

Dim tabloRetour

Dim tailleTabloretour

Dim countFor

Dim theConnectionString

theConnectionString = Me.getStringCon(bdd)

Dim theQueryString

theQueryString = "SELECT * from " & table

Dim theSQLConnection As New SqlConnection(theConnectionString)

Dim theSQLCommand As SqlCommand = theSQLConnection.CreateCommand()

ReDim tabloRetour(0)

tailleTabloretour = -1

theSQLCommand.CommandText = theQueryString

Dim thedataset As Data.DataSet = New Data.DataSet

Dim theadapter As New SqlDataAdapter()

Using connection As New SqlConnection(Me.getStringCon(bdd))

Try

connection.Close()

Catch ex As Exception

End Try

Try

connection.Open()

Catch ex As Exception

recupereTableinArray = arrayvide

connection.Close()

Exit Function

End Try

theadapter.SelectCommand = New SqlCommand("select * from " & table, connection)

Try

theadapter.Fill(thedataset, table)

Catch ex As Exception

recupereTableinArray = arrayvide

connection.Close()

Exit Function

End Try

odt = thedataset.Tables(table)

For countFor = 0 To odt.Rows.Count

tailleTabloretour = tailleTabloretour + 1

ReDim Preserve tabloRetour(tailleTabloretour)

tabloRetour(tailleTabloretour) = odt.Rows(0).ItemArray

Next


theSQLConnection.Close()

theSQLConnection = Nothing

theSQLCommand = Nothing

connection.Close()

End Using

recupereTableinArray = tabloRetour

End Function

EVIDEMENT CE N EST PAS UNE QUESTION DE TABLE VIDE!!!!

Si l'un d'entre vous pouvez m'orienter parce que la je ne sais pas.

Merci beaucoup d'avance.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
youpiyoyo 539 Messages postés vendredi 6 juin 2003Date d'inscription 14 juillet 2010 Dernière intervention - 6 août 2008 à 15:38
3
Merci
pour ton msg d'erreur tu as
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=504866&SiteID=1
http://support.microsoft.com/kb/921292
@+
youpi :)

Merci youpiyoyo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de youpiyoyo
youpiyoyo 539 Messages postés vendredi 6 juin 2003Date d'inscription 14 juillet 2010 Dernière intervention - 5 août 2008 à 17:07
0
Merci
Salut,
Est-ce qu'il te met un message d'erreur en particulier?
est-ce que ta table tu mets "dbo." devant. ceci dépend de ta structure de base et de la configuration de ton sql serveur. Fait attention à ton connection string fait un test avec .open dans un try catch.
un exemple de code avec sql command qui fonctionne:
Dim connectionString As String = "Data Source=SERVERNAME;Initial Catalog=NOMDETABASE;Persist Security Info=True;User ID=LOGIN;Password=PASSWORD;packet size=4096;"
Dim connection As New SqlClient.SqlConnection(connectionString)
Dim objAdapter As New System.Data.SqlClient.SqlDataAdapter
Dim sqlcmd as string = "SELECT dbo.RequestorProces.RequestorProcesId, dbo.RequestorProces.TicketNumber, dbo.RequestorProces.CreationDate, dbo.RequestorProces.ClosedDate, dbo.FormFieldValue.FormFieldName, dbo.FormFieldValue.FormFieldValue"sqlcmd sqlcmd + " FROM dbo.FormFieldValue RIGHT JOIN dbo.RequestorProces ON dbo.FormFieldValue.RequestorProcesId dbo.RequestorProces.RequestorProcesId"
objAdapter.SelectCommand = New System.Data.SqlClient.SqlCommand(sqlcmd, connection)
objAdapter.Fill(MainDataset,"nom table")
connection.Close()
youpi :)
Commenter la réponse de youpiyoyo
l0r3nz1 221 Messages postés mercredi 20 février 2008Date d'inscription 17 mars 2012 Dernière intervention - 6 août 2008 à 15:19
0
Merci
Bonjour,

En fait c'est deux fonctions presque pareils à la différence que l'une récupère une table sql serveur pour la mettre dans un tableau , celle la pas de souci.

le souci ici c'est sur Access , la connexion access, pas de souci mais lorsque j'utilise la fonction "fill" comme tu le fais en fait la j'ai un message d'erreur "Échec de IErrorInfo.GetDescription avec E_FAIL(0x80004005)."

le debut de la chaîne d'erreur est:
"System.Data.OleDb.OleDbException: Échec de IErrorInfo.GetDescription avec E_FAIL(0x80004005)."

la seule differance entre les deux fonction est que l'une à les objets oledb et l'autre sql...

Est ce un souci de serveur? de code
Commenter la réponse de l0r3nz1
l0r3nz1 221 Messages postés mercredi 20 février 2008Date d'inscription 17 mars 2012 Dernière intervention - 6 août 2008 à 17:24
0
Merci
Je te remerci, je vais regarder ça.
Commenter la réponse de l0r3nz1
l0r3nz1 221 Messages postés mercredi 20 février 2008Date d'inscription 17 mars 2012 Dernière intervention - 7 déc. 2009 à 12:25
0
Merci
J'avais laissé ça de coté!
Il faut mettre le nom des tables entre crochets!
Commenter la réponse de l0r3nz1

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.