Créer un index Dbase à partir d'un objet com ou net

centralvince Messages postés 13 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004 - 5 août 2004 à 15:58
centralvince Messages postés 13 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004 - 6 août 2004 à 18:09
Dans vb.net, je souhaite creer
un index sur un fichier dbf (dbase IV).
Cela revient normalement à creer un .mdx.

Existe t'il un objet dbase qui créé les index
comment puis-je faire ?

merci

12 réponses

Epoque51 Messages postés 37 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2004 1
5 août 2004 à 19:15
plop !

Moi je cherche a importer un fichier dbf (DBase IV) dans un dataset.
Si qq connais la demarche a suivre en .NET, ca serait cool.

Merci.
0
atnokpa Messages postés 1 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 6 août 2004
6 août 2004 à 13:44
Essaie avec cette syntaxe, ici il s'agit dune base de données FoxPro.
Au niveau de la chaine de connexion ConnectionString, remplacer le provider (Provider=vfpoledb.1) par celui de DBase IV et la source (Source=C:\DBFS\whrs.dbc) par le chemin à ta base de données DBase.

Public Function GetDataset() As Boolean

Dim ConnectionString As String = "Provider=vfpoledb.1;Data Source=D:\OPO\DBFS\whrs.dbc;"

Dim OPOCmdSelect As New System.Data.OleDb.OleDbCommand()

Dim OPOAdapter As New System.Data.OleDb.OleDbDataAdapter()

Dim OPOConnection As New System.Data.OleDb.OleDbConnection()

Dim Tmpdataset As New DataSet()
Dim iRecFound As Integer

OPOConnection.ConnectionString = ConnectionString

Try
If Me.OPOConnection.State = ConnectionState.Closed Then
Me.OPOConnection.ConnectionString = ConnectionString
Me.OPOConnection.Open()
End If
StrSQL = "Select * from MaTable"

OPOCmdSelect.CommandText = StrSQL
OPOCmdSelect.Connection = OPOConnection

OPOAdapter.SelectCommand = OPOCmdSelect

iRecFound = OPOAdapter.Fill(Tmpdataset, "MaTable")

Catch e As Exception
Return False
End Try

Return True

End Function
0
Epoque51 Messages postés 37 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2004 1
6 août 2004 à 14:54
Merci, mais ca n'a pas l'air de fonctionner, la fonction renvoie False a chaque fois. Si tu veux matter mon code :

    Public Function GetDataset() As Boolean

        Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\names.dbf;Extended Properties=dBASE IV;"
        Dim OPOCmdSelect As New System.Data.OleDb.OleDbCommand
        Dim OPOAdapter As New System.Data.OleDb.OleDbDataAdapter
        Dim OPOConnection As New System.Data.OleDb.OleDbConnection
        Dim Tmpdataset As New DataSet
        Dim iRecFound As Integer
        Dim StrSQL As Integer
        Dim dv As DataView

        OPOConnection.ConnectionString = ConnectionString

        Try
            If OPOConnection.State = ConnectionState.Closed Then
                OPOConnection.ConnectionString = ConnectionString
                OPOConnection.Open()
            End If
            StrSQL = "Select * from names"
            OPOCmdSelect.CommandText = StrSQL
            OPOCmdSelect.Connection = OPOConnection
            OPOAdapter.SelectCommand = OPOCmdSelect
            iRecFound = OPOAdapter.Fill(Tmpdataset, "names")

            '####### We fill in the grid #######
            dv = Tmpdataset.DefaultViewManager.CreateDataView(Tmpdataset.Tables(0))
            DataGrid1.DataSource = dv

        Catch e As Exception
            Return False
        End Try

        Return True

    End Function
0
Epoque51 Messages postés 37 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2004 1
6 août 2004 à 14:57
si J'enleve le Try, il plante au niveau de :
OPOConnection.Open()
et me dit :
"An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll"

Merci

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
centralvince Messages postés 13 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004
6 août 2004 à 15:52
as tu essayer en utilisant un lien odbc ?
0
Epoque51 Messages postés 37 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2004 1
6 août 2004 à 16:03
Non, je debute enfait, je sais pas ce aue c'est un lien odbc :p
0
centralvince Messages postés 13 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004
6 août 2004 à 16:38
je viens de trouver l'astuce ! ;)

Pour les bases DBase, le repertoire de travail représente la base et le fichier.dbf, une table.
Dans la chaine de connexion, il faut donc mettre :

Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\; Extended Properties=dBase IV"

sur la source, ne pas mettre le nom du fichier mais le nom du repertoire !
et après, nom de la table = nom du fichier (sans "dbf")

ca te va ?
bye
0
Epoque51 Messages postés 37 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2004 1
6 août 2004 à 17:13
la Connection passe apparement mais j'ai une erreur lors du Fill.

Mon Code est comme ca maintenant :

    Function GetDataset()

        'Fichier names.dbf dans D:\
        Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=dBASE IV;"
        Dim OPOCmdSelect As New System.Data.OleDb.OleDbCommand
        Dim OPOAdapter As New System.Data.OleDb.OleDbDataAdapter
        Dim OPOConnection As New System.Data.OleDb.OleDbConnection
        Dim ds As New DataSet
        Dim iRecFound As Integer
        Dim StrSQL As String
        Dim dv As DataView

        OPOConnection.ConnectionString = ConnectionString

        Try
            If OPOConnection.State = ConnectionState.Closed Then
                OPOConnection.ConnectionString = ConnectionString
                OPOConnection.Open()
            End If

            StrSQL = "Select * from names"

            OPOCmdSelect.CommandText = StrSQL
            OPOCmdSelect.Connection = OPOConnection
            OPOAdapter.SelectCommand = OPOCmdSelect
            iRecFound = OPOAdapter.Fill(ds, "names")

            '+------ We fill in the grid ------+
            dv = ds.DefaultViewManager.CreateDataView(ds.Tables(0))
            DataGrid1.DataSource = dv
            '+---------------------------------+

            'We close the connection
            OPOConnection.Close()

        Catch e As OleDbException
            TextBox1.Text = e.Message 'Je copie l'erreur dans une texbox
        End Try

    End Function


Any Idea ?
0
Epoque51 Messages postés 37 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2004 1
6 août 2004 à 17:20
Jai oublie de mettre l'erreur :
IErrorInfo.GetDescription failed with E_FAIL(0x80004005).

Merci bien de te pencher sur mon pb.
0
Epoque51 Messages postés 37 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2004 1
6 août 2004 à 17:58
Enfait ca marche, je viens de creer une base dBase IV avec Excel, ca marche nickel, mais avec mes fichiers d'origine que mon appli sera amener a exporter, ca ne marche pas alors aue Excel arrive tres bien a les ouvrir.

Any Idea ?
0
Epoque51 Messages postés 37 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2004 1
6 août 2004 à 18:05
J'ai verifier les headers du fichier sous mon linux, le fichier est de type DBase III, donc deja c'est normal que ca ne marchait pas.
J'ai ensuite remplace ca Extended Properties=dBASE III avec la bonne version, mais sans succes, ca ne marche tjs pas.
0
centralvince Messages postés 13 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004
6 août 2004 à 18:09
moi aussi ca marche bien...la connection et un select
mais l'assistant oledbDataAdapter refuse de générer un dataadapter avec une tel base

qqun a une solution ?

et concernant l'index mdx, y'en a qui savent ?
0
Rejoignez-nous