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

AS/400 Discussion :

Import tables AS400 avec index dans MS Access


Sujet :

AS/400

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Import tables AS400 avec index dans MS Access
    Bonjour a tous,

    ce post fait suite a un precedent : ici

    Je cherche a importer de grandes quantites de donnees de l'AS400 pour les retravailler dans Access. A date j'utilise client access pour extraire les donnees (en fichier txt), mais malheureusement pas les indexs... Mes connaissances informatiques se limitant a du sql de base et vba, je ne sais pas comment le faire de facon securisee (et rapide) directement dans Access via odbc, pouvez vous me renseigner ?

    Par avance merci pour votre aide.

    FMB

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Je ne comprend pas bien ce que tu veux faire ?

    Un index c'est un fichier logique, qui est une représentation de certaine colonne de ta table sur lequel il est associé (en gros ).

    Si tu fais une extraction de donnée tu as déjà toute les données utile non ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Pardon je ne suis peut être pas tres clair : je souhaite manipuler une quantite importante de données dans Access. A date, j'extrais en fichier txt via client access, puis j'importe dans une table formatée et indexée d'Access, ds le but d'accelerer le traitement par la suite... mais du coup je traite deux fois l'information (un export plus un import).
    Mon souhait serait de trouver un moyen d'extraire en meme temps les donnees et les caracteristiques des tables pour gagner du temps.

    En esperant avoir ete plus clair

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Quand tu es sous MS Access tu fais :
    - ouvrir
    - change le type de fichier en ODBC Database () (fenêtre du bas)
    - Onglet "Source de données machine"
    - bouton "Nouveau"
    - "source de données système"
    - "Client Access ODBC Driver (32 bits)
    - Terminer
    - dans l'onglet Général, complète les champs nom source et système et éventuellement, modifie les options de connexion (user et mot de passe)
    - dans l'onglet Conversion, coche Conversion des données binaires
    - ok
    - choix de la table, le nom de la ressource sera ajoutée dans la fenêtre de tes choix des formats de fichiers
    - double clic et le tour est joué.

    Je l'avais fait avant et je m'en rappelais plus. Je viens de le refaire et ça marche.

    Bonne chance.

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci pour cette reponse, mais en fait j'aurai voulu pouvoir faire mes traitements en local, et non pas directement sur le serveur de production...

    Du coup j'ai essayé d'importer la totalite de la table en utilisant le lien créé mais le volume est certainement trop important ("ODBC Query Timeout Property: SQL0666 Estimated Query Processing Time Exceeds Limit")

    Sur un site, il y a des elements de reponses, mais l'import se faisant ligne a ligne, il est treeees long... Comment puis je modifier le code pour que l'import se fasse plus rapidement ?

    Edit : voici le code dudit site :

    Option Compare Database
    Public Function Imp_CA()

    ‘ Variables de connexion ADO

    Dim CnnAs400 As ADODB.Connection
    Dim RsAs400 As ADODB.Recordset
    Dim Cnndb As New ADODB.Connection
    Dim Rsdb As New ADODB.Recordset
    Dim strTabSupprimer As String
    Dim strSQL As String
    Dim i As Integer
    Dim fld As ADODB.Field

    ' Variables paramètres

    Dim Dat As String 'Variable Date de bon
    Dim Nas As String 'Variable nom de l'As400
    Dim Nus As String 'Variable nom utilisateur
    Dim Cus As String 'Variable Code Utilisateur

    ' Attribue des valeurs aux variables
    ' Transforme le contrôle date du formulaire d'accueil par exemple 24/10/06 en texte de 6 caractères 061024

    Dat = Right(Form_Frm_Accueil.[Txt_DateBon], 2) & Mid(Form_Frm_Accueil.[Txt_DateBon], 4, 2) & Left(Form_Frm_Accueil.[Txt_DateBon], 2)

    ' Les trois variables suivantes vont chercher leurs valeurs dans la table « Paramètres »

    Nas = Nz(Dlookup("Nom_AS400", "Tbl_Parametres"))
    Nus = Nz(Dlookup("Identifiant", "Tbl_Parametres"))
    Cus = Nz(Dlookup("Mot_Passe", "Tbl_Parametres") )

    ' Nous supprimons les données de la table "Tbl_Import_Ca"

    DoCmd.SetWarnings False
    strTabSupprimer = "DELETE * FROM [Tbl_Import_Ca];"
    DoCmd.RunSQL strTabSupprimer
    DoCmd.SetWarnings True

    ' Nous lançons la connexion.

    Set CnnAs400 = CreateObject("ADODB.connection")
    CnnAs400.Open "provider=IBMDA400;data source=" & Nas & "", Nus, Cus
    ' Attention à l'orthographe, sinon galère
    Set Cnndb = CurrentProject.Connection
    Set RsAs400 = CreateObject("ADODB.recordset")
    RsAs400.ActiveConnection = CnnAs400

    'Nous créons la Requête.

    strsql = " " & _
    " SELECT T01.NOBON ,T01.COVEN ,T01.BONDA||T01.BONDM||T01.BONDJ ," &_
    " T01.COCLI ,T01.MOBON ,T02.NOVEN " & _
    " FROM GESTCOM.AVENTP1 T01 " & _
    "JOIN GESTCOM.BVENDP1 T02 " & _
    " On T01.COVEN = T02.COVEN " & _
    " WHERE (T01.BONDA||T01.BONDM||T01.BONDJ = '061025' AND " & _
    "T01.COVEN = ' V12' "

    ' Pour avoir notre champ Date1 nous faisons une concaténation et nous mettons dans la condition Where une date quelconque, car l'As400 n'accepte pas directement la variable. ‘Nous ‘remplaçons la valeur bidon de la date par le contenu de la variable

    strsql = Replace(strsql, "'061025'", Chr(39) & Dat & Chr(39))
    RsAs400.Open strsql
    Do Until RsAs400.EOF
    i = 1
    For Each Fld In RsAs400.Fields
    Select Case i
    Case 1
    Champ1 = Fld.Value
    Case 2
    Champ2 = Fld.Value
    Case 3
    Champ3 = Fld.Value
    Case 4
    Champ4 = Fld.Value
    Case 5
    Champ5 = Fld.Value
    Case 6
    Champ6 = Fld.Value
    Case Else
    End Select
    i = i + 1
    Next Fld

    If Rsdb.State = 0 Then

    ' Ouverture de la table et remplissage

    Rsdb.Open "[Tbl_Import_Ca]", Cnndb, adOpenKeyset, adLockOptimistic
    End If

    ' Attribution des valeurs aux champs correspondants

    With Rsdb
    AddNew Array("N°_Bon", "Code_Ven", "Date1", "Code_client", "CA_Bon", "Nom_Ven"),
    Array(Champ1, Champ2, Champ3, Champ4, Champ5, Champ6).Update

    End With
    RsAs400.MoveNext
    Loop

    ' Ferme la connexion

    RsAs400.Close
    Set RsAs400 = Nothing
    Set Rsdb = Nothing
    Set CnnAs400 = Nothing
    Set Cnndb = Nothing

    La Table est remplie et il faut maintenant s'occuper du dernier champ qui nous intéresse
    c'est à dire le champ "Date_Bon". Nous allons nous servir de la fonction Update.

    DoCmd.SetWarnings False 'Stoppe les messages d'alerte
    DoCmd.RunSQL "Update Tbl_Import_Ca Set Date_Bon " & _
    "= Right([Date1],2) & '/' & Mid([Date1],3,2) & '/' & Left([Date1],2)"
    DoCmd.SetWarnings True


    End Function

  6. #6
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par flodu42 Voir le message
    Merci pour cette reponse, mais en fait j'aurai voulu pouvoir faire mes traitements en local, et non pas directement sur le serveur de production...
    Il n'y a pas de moyen de sauvegarder sous Access (que je ne connais pas bien) ?

    Du coup j'ai essayé d'importer la totalite de la table en utilisant le lien créé mais le volume est certainement trop important ("ODBC Query Timeout Property: SQL0666 Estimated Query Processing Time Exceeds Limit")

    Sur un site, il y a des elements de reponses, mais l'import se faisant ligne a ligne, il est treeees long... Comment puis je modifier le code pour que l'import se fasse plus rapidement ?
    - Aucune idée pour modifier le code, mais tu peux essayer plusieurs imports pour reconstituer la totalité de ta table.
    - tu es obligé de faire ça sous Access ?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2009, 12h47
  2. Réponses: 1
    Dernier message: 19/02/2008, 00h32
  3. Pb requête avec critères dans projet Access
    Par laville dans le forum Access
    Réponses: 4
    Dernier message: 19/04/2006, 20h09
  4. problème avec graphique dans état access
    Par petitmic dans le forum Access
    Réponses: 5
    Dernier message: 07/09/2005, 14h55
  5. cellule d'une table visible avec focus dans div scrollable
    Par echecetmat dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/03/2005, 10h57

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