IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

connection ODBC extraire certains champs


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Points : 26
    Points
    26
    Par défaut connection ODBC extraire certains champs
    Bonjour,

    je butte sur pb suivant
    j'importe des données d'une table Oracle via une connection odbc par DoCmd.TransferDatabase ...
    La table importée est tres lourde (plus de 800000 enregistrements) et je n'ai pas besoin de tous les champs.
    J'ai beau chercher, je ne trouve pas comment importer que certains champs de la base.

    Merci de votre aide

    Krassi

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Si tu veux importer certains champs il faut passer par ADO, avec une requête SQL où tu sélectionne tes champs.

    Va voir les tutos ADO

    Où sinon tu peux liés ta table, et faire une requête pour récupérer les champs que tu veux (ou une requête de création de table)

    Starec

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Merci,
    je suis allé voir vers ADO et ai pondu ce bout de code;


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function NORD() 'connection à la base CTCSBDP
    'Déclaration de la variable de connexion
    Dim cnx As ADODB.Connection
    Set cnx = New ADODB.Connection
    Dim rst As New ADODB.Recordset
    'Définition de la chaîne de connexion
    cnx.ConnectionString = "DSN=CTCSDBP;UID= aa ;PWD= bb  ;"
     
    'Ouverture de la base de données
    cnx.Open
     
    rst.Open "SELECT BZID01,RSTI01 FROM PGNCTCSF.CTVSIT", cnx
    Voila, maintenant je suis une buse, mais je ne sais comment entrer les données de ce recordset dans une table de ma base

    Merci pour votre aide

    Krassi

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    un exemple de code pour copier dans un table existante:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Function NORD() 'connection à la base CTCSBDP
    'Déclaration de la variable de connexion
    Dim cnx As ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim cn2 As ADODB.Connection, rs2 As ADODB.Recordset
    Dim strTblName As String
     
    ' Nom table Access cible
    strTblName = "tblTEST"
     
    Set cnx = New ADODB.Connection
    'Définition de la chaîne de connexion
    cnx.ConnectionString = "DSN=CTCSDBP;UID=aa;PWD=bb;"
     
    'Ouverture de la base de données distante
    cnx.Open
     
    rst.Open "SELECT BZID01,RSTI01 FROM PGNCTCSF.CTVSIT", cnx
     
    ' Vider la table locale
    CurrentDb.Execute "DELETE FROM " & strTblName
    ' Ouverture recordset pour table Access locale
    Set cn2 = CurrentProject.Connection
    Set rs2 = New ADODB.Recordset
    rs2.Open "SELECT * FROM " & strTblName, cn2, adOpenKeyset, adLockOptimistic
     
    Do While Not rst.EOF
       rs2.AddNew
       rs2("BZID01") = rst("BZID01")
       rs2("RSTI01") = rst("RSTI01")
       rst.MoveNext
    Loop
    If rs2.EditMode <> adEditNone Then rs2.Update
     
    ' Fermeture recordset et connexion locales
    rs2.Close
    Set rs2 = Nothing
    Set cn2 = Nothing
     
    ' Fermeture recordset et connexion distante
    rst.Close
    Set rst = Nothing
    cnx.Close
    Set cnx = Nothing
     
    End Function
    La copie des enregistrements de fait champ par champ
    champ cible = champ souce : rs2("BZID01") = rst("BZID01")
    ce qui permet d'ailleurs d'avoir des noms de champ différents.

    A+

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Merci à vous pour votre aide; ça marche du feu de Dieu

    Krassi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. extraire certains champs de colonne et les mettre en ligne
    Par DécisionBI dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 15/07/2013, 14h33
  2. [CR 8.5] - SQL 2000 - Certains champs invisibles ????
    Par caviar dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 07/02/2005, 14h41
  3. connection odbc et sqlserver
    Par fredforum dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 05/11/2004, 16h37
  4. supprimer et archiver données de certains champs
    Par tomm dans le forum Bases de données
    Réponses: 11
    Dernier message: 10/03/2004, 09h13
  5. [VB6] Connection ODBC Oracle
    Par babe dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/10/2002, 17h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo