begin process at 2010 09 06 23:01:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Foxpro

 > 

Divers

 > 

Général

 > 

Requete select sur une table foxpro


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Requete select sur une table foxpro

jeudi 1 juillet 2010 à 11:27:03 | Requete select sur une table foxpro

GarnierFlorian


Bonjour à tous ! et peut être à toutes^^

Mon problème se décompose en deux parties : dans un premier temps, j'aimerais savoir qu'elle est la syntaxe pour récupérer des données d'une table foxpro via une requete select avec ADO !

Ensuite, et c'est ce qui me posera le plus problème, j'aimerais insérer les résultats de ma requète dans excel : les données sont insérées dans une feuille du classeur dans un tableau déjà construit !

Voila, toute aide est la bienvenue, j'ai déjà essayé de trouvé des infos la-dessus, donc j'ai compris certaines choses, mais je me mélange un peu quand même entre les différentes méthodes: moi je veux le faire avec ADO.

Je tient à préciser que je commence tout juste avec foxpro donc j'ai quelque soucis, et puis ça fesait un moment que je n'avais pas fait de vba^^ En tout cas j'ai fait ma connexion à la table, et j'ai prévu la déconnexion, mais pour le reste je patine encore ^^

Merci d'avance !

Peace ;)

 
jeudi 1 juillet 2010 à 14:09:13 | Re : Requete select sur une table foxpro

MichelAtoutFox

Membre Club
Bonjour,

je ne suis pas sur de bien comprendre ta demande:

  • si tu as fait ta connexion, il ne te reste qu'à faire un SELECT etc...
  • tu dis que tu commences tout juste avec FoxPro, mais est-ce que tu as FoxPro installé sur ta machine, ou bien tu as seulement des tables?
    si tu as foxpro sur ta machine, pourquoi passer par ADO pour requèter des tables?
  • et enfin, comment veux-tu qu'on puisse t'aider si tu ne montre pas le code que tu as écrit jusqu'à maintenant et les messages d'erreurs éventuels?

    Merci de préciser également la version de FoxPro que tu utilises
  • jeudi 1 juillet 2010 à 15:06:48 | Re : Requete select sur une table foxpro

    GarnierFlorian

    Bonjour !

    Merci pour ta réponse ! Je vais donc essayer de m'expliquer un peu plus clairement : tout d'abord je n'ai pas foxpro d'installé sur ma machine, en fait je souhaite effectuer des traitements sur des tables foxpro(je code en vba sous visual basic, sous excel 2007).

    Pour mieux cernés la chose : je souhaite créer une petite appli qui me permettrait d'automatiser des requetes(select,insert,update,delete) sur différentes tables.

    Il me semble que la version des tables foxpro est la version 7.

    Sinon, il ne me reste peut-être plus qu'à faire mon select, mais je ne sais pas comment le placer dans mon code, ni par qu'elle instruction : faut-il que j'utilise un recordset ou quelque chose du genre.. J'aurais bien aimé trouver un tuto sur tout ça mais je n'ai pas trouvé :/

    Sinon voici le code que j'ai pour la connexion et la déconnexion aux tables :

    Code Visual Basic :
    Option Explicit
    
    Dim connect_foxpro As New ADODB.Connection 'Connexion sur base Fox Pro
    Dim cmd_fox As New ADODB.Command 'Commande
    Dim rqt_fox As New ADODB.Recordset 'Recordset
    Dim connecter_base As Boolean 'Variable permettant de savoir si la personne s'est connecté à la base Fox Pro
    
    
    'FONCTION PERMETTANT DE SE CONNECTER SUR UNE BASE FOX PRO
    Function Connexion(chemin_rep As String)
    Dim CHEMIN As String
    CHEMIN = chemin_rep
    
    'Si renvoie Vrai , connexion réussie
    'Sinon renvoie le numéro de l'erreur de connexion
    On Error GoTo error_connexion:
    
    'chemin est une constante indiquant tout simplement le répertoire de la table
    connect_foxpro.ConnectionString = "DRIVER={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" & CHEMIN
    connect_foxpro.Open
    connecter_base = True
    Connexion = True
    
    Exit Function
    
    error_connexion:
    Connexion = Err.Number
    
    End Function
    
    'FONCTION PERMETTANT DE SE DECONNECTER D'UNE BASE FOX PRO
    Function Deconnexion()
    
    'Si renvoie 1 , deconnexion réussie
    'Sinon renvoie le numéro de l'erreur de deconnexion
    On Error GoTo error_deconnexion:
    
    connect_foxpro.Close
    Set connect_foxpro = Nothing
    connecter_base = False
    Deconnexion = True
    Exit Function
    
    error_deconnexion:
    Deconnexion = Err.Number
    
    End Function


    Pour le moment je n'ai que ça ! Et je ne sais pas par où commencer pour faire mes traitements. Par contre pour le sql ça pause aucun problème...

    J'espère avoir été clair sinon je peux essayer de repréciser au besoin !

    Peace ;)
     
    jeudi 1 juillet 2010 à 15:09:34 | Re : Requete select sur une table foxpro

    GarnierFlorian

    Petite précision : j'ai déclaré un recordset car j'ai commencé à essayer quelques truc mais à vrai dire je ne sais pas trop comment l'utiliser !

    Peace
    jeudi 1 juillet 2010 à 16:03:50 | Re : Requete select sur une table foxpro

    MichelAtoutFox

    Membre Club

    tu as essayé quelques trucs, lesquels???

    pour le recordset, oui, évidemment, il te faut bien un objet pour recevoir les données que tu reçois par ADO.
    Par contre, il vaut mieux utiliser VFPOLEDB comme provider, à la place de l'ODBC que tu utilises.

    pour tout savoir (enfin presque ), je te conseille de télécharger le VFPOLEDB provider sur le site de Microsoft, en principe le fichier d'aide doit s'installer avec.

    voici un exemple tiré de l'aide de VFPOLEDB:

    Code Visual Basic :
    CLEAR
    LOCAL oConn as "adodb.connection"
    LOCAL oRS as "adodb.recordset"
    oConn = CREATEOBJECT('adodb.connection')
    oRS = CREATEOBJECT('adodb.recordset')
    cConnStrng = ;
       "Provider=vfpoledb;Data Source="+HOME(2)+"northwind\northwind.dbc"
    oConn.CursorLocation= 3            && adUseClient
    oConn.Open(cConnStrng)
    
    *!* Open RecordSet using keyset cursor and optimistic locking.
    oRS.Open(;
       "SELECT * FROM customers WHERE customerid = 'CACTU'",oConn,1,3,1)
    ? 'Current value:',oRS.Fields("contactname").Value
    oRS.Fields("contactname").Value = "Patricio X. Simpson"
    oRS.Update()
    oRS.Requery()
    ? 'New value:',oRS.Fields("contactname").Value
    oRS.Close()
    oConn.Close()
    jeudi 1 juillet 2010 à 16:09:05 | Re : Requete select sur une table foxpro

    GarnierFlorian

    Merci beaucoup de m'avoir aiguiller !

    Je vais regarder tout ça et je ferais un post de ce que j'ai trouvé !!

    Comme ça si ça fonctionne, vous pourrez me dire si c'est bien codé, ou si j'ai des erreurs vous pourrez peut-etre m'aider à les résoudre !

    Merci bien en tout cas , je m'y met !!

    Peace ;)
     
    mercredi 18 août 2010 à 14:47:41 | Re : Requete select sur une table foxpro

    GarnierFlorian

    Bonjour !

    Donc depuis le temps, j'ai pas bien avancé !

    Voici mon code pour le select que je souhaitais effectuer :

    Code Visual Basic :
    Option Explicit
    
    Dim targetRange As Range
    Dim intColIndex As Integer
    Dim nbRecords As Integer
    Dim che_fic As String
    
    Dim cnx As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim rs As ADODB.Recordset
    
    Sub Afficher(nomTab As String)
    
        nbRecords = 0
        
        'Connexion à la base
        Set cnx = New Connection
        'chemin est une constante indiquant tout simplement le répertoire de la table
        With cnx
            .ConnectionString = "Provider = vfpoledb; Data Source =" + CHEMIN + nomTab
            .Open
        End With
        
        'Préparation de l'objet command
        Set cmd = New ADODB.Command
        Set cmd.ActiveConnection = cnx
        
        cmd.CommandText = REQ_SELECT
        
        'On déclare le recordset
        Set rs = New ADODB.Recordset
        
        'Exécute la requête
        rs.Open cmd, CursorType:=adOpenStatic
        
        'On sélectionne la feuille de destination
        ActiveWorkbook.Sheets(NOM_FEUILLE_SELECT).Activate
        
        'On efface l'ensemble du contenu précédent
        ActiveSheet.Cells.Clear
        
        'On vérifie que l'on a bien récupéré des enregistrements
        If Not rs.EOF Then
        
            rs.MoveFirst
            Set targetRange = ActiveWorkbook.Sheets(NOM_FEUILLE_SELECT).Cells(1, 1)
            
            ' Mise en place des noms de champs comme entêtes de colonne
            For intColIndex = 0 To rs.Fields.Count - 1
                targetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name
            Next
        
            Application.StatusBar = "Extraction des enregistrements ..."
            ' Vide le contenu du jeu d'enregistrements dans la feuille de calcul Excel
            targetRange.Offset(1, 0).CopyFromRecordset rs
            Sheets(NOM_FEUILLE_SELECT).Columns("A:Z").AutoFit
           
            nbRecords = rs.RecordCount
            MsgBox "Import de " & nbRecords & " enregistrement(s) !"
            
         Else
            MsgBox "Il n'y a aucun enregistrement correspondant.", vbInformation, "Enregistrement impossible"
            
        End If
        
        Application.StatusBar = ""
        ' Ferme le jeu d'enregistrements s'il est toujours ouvert
        If CBool(rs.State And adStateOpen) Then rs.Close
        
        'Enregistrement des modifications des feuilles excel
        Application.DisplayAlerts = False
        che_fic = REP_FIC + NOM_FIC
        ActiveWorkbook.SaveAs che_fic
        Application.DisplayAlerts = True
            
        ActiveWorkbook.Sheets(NOM_FEUILLE_PRINCIPAL).Activate
        
        cnx.Close
        
        Set cnx = Nothing
        Set rs = Nothing
        Set targetRange = Nothing
        Set cmd = Nothing
    
    End Sub
    


    Cela fonctionne très bien !

     
    mercredi 18 août 2010 à 14:58:34 | Re : Requete select sur une table foxpro

    GarnierFlorian

    Mais j'ai besoin d'une petite aide : j'ai commencé a tenter quelques petites choses pour faire un insert dans ma table.

    Voici le bout de code qu j'ai :

    Code Visual Basic :
    
    Sub Insert(nomTab As String)
        
        Dim cnx As ADODB.Connection
        Dim cmd As ADODB.Command
        
        'Connexion à la base
        Set cnx = New Connection
        'chemin est une constante indiquant tout simplement le répertoire de la table
        With cnx
            .ConnectionString = "Provider = vfpoledb; Data Source =" + CHEMIN + nomTab
            .Open
        End With
        
        'Préparation de l'objet command
        'Set cmd = New ADODB.Command
        'Set cmd.ActiveConnection = cnx
        
        'On exécute l'insert
        cnx.Execute REQ_INSERT, adCmdText
        
        cnx.Close
        
        Set cnx = Nothing
        Set cmd = Nothing
    End Sub


    Je vous donne ma requète : de toute façon, toutes les données sont inventés..

    Code :
    Public Const REQ_INSERT As String = "Insert Into client Values (000001,'','FLORIAN GARNIER','FR454545454','DEVELOPPEUR EN INFORMATIQUE','65 KINGSTON ROAD','KINGSTON BOULEVARD STATION','44120','VERTOU','FRA','0044 0645 445 455',00443222323232,'FRA',201200,'',11111111,'','AS24 FR','EUR','VIRT DEVISE CLIENT','BPBA','P/O BOX 44','POOLE','','Test - TEST ajout','28/08/2010','12/12/2010',0,'TEST ADR','TEST ADR2',0,0,'00/01/1900',0,'00/01/1900','00/01/1900','00/01/1900',0,'FRBARGO44',0,1,0,0,0,1,'TACTAC','',0,0,0,'00/01/1900','','cif','66 ROAD STREET','ROAD STREET','GG44 5BT','NANTES','00/01/1900',0,'F5','ffffff','ffffff','FG','00/01/1900','','FR45454545454545454ACM',0,'00/01/1900','00/01/1900','FRA',0,'',1,0007,'FRA',0,0,0007,'00/01/1900')"
    


    Et donc, j'ai une erreur, le message étant :

    Erreur d'exécution '-2147467259(80004005)':

    Must specify additional parameters


    Si quelqu'un voit de quoi ça peut venir je suis à l'écoute^^

    Merci d'avance :)

    Peace ;)



     
    lundi 23 août 2010 à 13:53:23 | Re : Requete select sur une table foxpro

    GarnierFlorian

    Bonjour,

    Bon j'ai avancé, pour mon erreur d'avant c'est juste qu'il me manquait quelques champs à renseignés pour exécuter ma requête : j'en remplissais 78 sur 86, donc evidemment..

    Mais par contre la je suis sûr de moi, et pourtant j'ai une erreur :

    "Data type Mismatch"

    Je voudrais savoir si ça signifit que certaines infos que j'ai renseigné ne correspondent pas au type de la colonne, ou alors si c'est tout autre chose ??


    Merci d'avance, Peace !


     
    lundi 23 août 2010 à 14:14:17 | Re : Requete select sur une table foxpro

    MichelAtoutFox

    Membre Club
    Bonjour,

    tu as vu juste: ce message signifie que tu as une erreur de correspondance entre les données proposées et le type de colonne.

    1 2 3

    Cette discussion est classée dans : problème, table, requete, select, foxpro


    Répondre à ce message

    Sujets en rapport avec ce message

    problème avec alter table [ par jee0404 ] bonjour,             Je travaille avec les tables de foxpro (dbf) et j'ai faite un logiciel qui changele nom des colonmes manuellement avec la command Objet : Problème d’utilisation de « Installshield Express Visual Foxpro Limited Edition » [ par dgpi ] Objet : Problème d’utilisation de « Installshield Express Visual Foxpro Limited Edition » Ordinateur utilisé : Portable Toshiba S1800 – 712 - Forcer Utilisation d'un index dans une requete en VB [ par paperino ] Bonjour,J'ai cherché sur le forum comment faire pour forcer l'utilisation d'un index.je m'explique, je vais chercher un numéro de serie (en utilisant imprimer en foxpro [ par jee0404 ] Bonjour, J'ai un problème , je fais une application en foxpro et j'aimerais configurer l'imprimante manuellement (c'est-à-dire par des lign image et documentation [ par jee0404 ] Bonjour,        J'ai deux problèmes : 1er Problème :    J'ai un programme de foxpro en Dos et il faut que je migre en Visualet je voudrais être de gén Visual foxpro et access [ par steboy ] Bonjour, Je dois récupérer dans une table DBF des données d'une table access. <P class=MsoNo Requete Foxpro [ par spootnic22 ] salut,j'exécute une requete sous visual foxpro6.0 mais ça marche pas:"insert into table1  select * from table2 where condition"un message d'erreur s'a lister les champs et le type d'une table foxpro [ par AliceT ] Bonjour, je cherche le moyen (via oledb) de lister les champs ansi que les caractéristiques d'une table foxpro.J'attends vos idéesbiz'Alice problème driver odbc visual foxpro [ par laurent7474 ] Bonjour,je travail avec un fichier excel, que j enregistre au format dbase 4 puis je passe par le driver visual foxpro pour travailler avec un logicie Transfère données vers sql 2005 [ par zuddap ] bonjour a tous voila on m'a confier la charge de transférer les donnée contenu dans un fichier table foxpro dans les table correspondante sous sql 200


    Nos sponsors


    Sondage...

    CalendriCode

    Septembre 2010
    LMMJVSD
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   

    Consulter la suite du CalendriCode

     
    Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
    CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
    CodeS-SourceS.com© est une marque déposée tous droits réservés

    Google Coop CodeS-SourceS Google Coop CodeS-SourceS
    Temps d'éxécution de la page : 9,672 sec (4)

    Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales