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

Bases de données Delphi Discussion :

Consolidation des bases de données


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut Consolidation des bases de données
    Salut
    j'ai une application qui a un alias Equipe, cette bases de données est installé sur plusieurs pc autonomes.
    chaque fin du mois je dois faire le consolidé de ces bases de donnés dans mon PC après avoir ramené tous les répertoires BD des utilisateurs.et pour cela je dois programmer une application de consolidation avec un alias nouveau, disons Consolid
    maintenant, j'aimerai savoir comment faire pour enregistrer toutes ces tables des utilisateurs dans une seule table dont l'alias est Consolid.

    Donc j'ai :
    1- une application avec alias Consolid
    2- plusieurs répertoires contenants des tables sans alias.

    quel est le meilleur moyen pour faire ce travail sans fixer le chemin des répertoires?

    Merci d'avances

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Avec quelle base de données travailles tu ?
    Quels sont les composants db que tu utilises ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    c'est une base de données Paradox
    les composants que j'utilise sont ceux de delphi 5 (standard)

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Voici 3 possibilités possible :

    1- Le TBatchMove (composant BDE) qui permet le transfert de données

    2- Si tu es sûr qu'il n'y a pas de doublons (ou que la base de données accepte les doublons) tu peux faire de la manière suivante

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Insert into 'c:\monchemin\matableDestination.db' (champ1,Champ2,Champ3, ... , ChampX)
    Select Champ1,Champ2,Champ3, ... , ChampX from 'c:\monchemin\MatableSource.db' Where MOnCritère = MaValeurCritère

    Après il est simple de faire un code pour le transfert.

    3- Il va te falloir faire une boucle sur la table source et insérer les données une a une dans la table de destination. (Dans ce cas la tu peux faire beaucoup plus de tests que sur les deux cas précédents)
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    salut et merci

    pour la 1ère proposition: utiliser batchmove, veut dire que je dois copier les autres BD dans un repertoire fixe avec un alias fixe, et à chaque fois je remplace le contenu de ce repertoire par d'autres tables ?

    2- dans ta seconde proposition, n'y a -t-il pas un moyen d'envoyer le chemin de matablesource en paramaètres ? parceque le chemin changera d'un repertoire à un autre

    3- c'est la même chose que le problème de la première proposition, sauf que là c'est fait manuellement


  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par smail21 Voir le message
    2- dans ta seconde proposition, n'y a -t-il pas un moyen d'envoyer le chemin de matablesource en paramaètres ? parceque le chemin changera d'un repertoire à un autre
    Tu te fais une fonction/procedure

    Code Delphi : 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
     
    function Transfert (Source, Destination : String) : Boolean;
    begin
      With Query do
      begin
        Close;
        SQL.Clear;
        SQL.Add('Insert into ' + QuotedStr(Destination) + ' (champ1,Champ2, ...)');
        SQL.Add('Select Champ1,Champ2 , ... from ' + QuotedStr(Source));
        SQL.Add('Where Critere = Valeur');
        try
          Execute; // plus sur en BDE si c'est ca
          Result := True;
        Except on E:Exception do
          Result := False;
        end;
      end;
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    merci
    je vais l'essayer et te répondre

  8. #8
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par Rayek Voir le message
    INSERT INTO 'c:\monchemin\matableDestination.db' (champ1,Champ2,Champ3, ... , ChampX)
    SELECT Champ1,Champ2,Champ3, ... , ChampX FROM 'c:\monchemin\MatableSource.db' WHERE MOnCritère = MaValeurCritère
    je crois que votre prog est un peut comme la gestion des caisses
    je l'avais résolut (bien sûr là j'ai que 7 caisse , et bien sur je transfert pas tt les données sauf les bon de livraison, ces lignes, reglement et ces lignes) pour ne pas avoir de doublant, j'ai ajouter le (n° caisse *100000) pour les cle (n° bon, et n° regle)
    bien sûr, moi j'ai crée un prog serveur(serversocket), et un autre client(clientsocket), c'est le client qui crée des instruction sql dinamiquement avec tt les modif naissaire et les envoit au serveur pour les exécutés,
    avant l'envoit des données le client damande N° max de BL reglement,
    bah, je l'avait fait car les caisses (prog et base)sont fait en foxpro,
    et les caisses sont loin l'une d'elle et plus de 300 km
    il y a une autre méthode c'est passé par TClientdataset (midlwere) (je crois ) ou meme avec DCom, bah à toi de creusé les sujet
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  9. #9
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    ta réponse ressemble à ce smiley

    car c'est trop compliqué, pour le moment c'ets à moi de faire le consolidé et une seule fois c'est tout, par la suite j'aurais besoin de ton aide pour des consolidé de plus de 2000 KM

  10. #10
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    salut
    j'ai un problème Rayek !!!!
    il ne m'accepte pas la liste des champs car il me dit qu'une chaine ne dépasse pas les 255 caractères! alors que les noms des champs que j'ai sont longs

    que dois-je faire?

  11. #11
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Fait voir ton code (Avec les champs), comme çà, je n'ai aucune réponse à te donner et si possible, fournir la structure des tables aiderait grandement.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  12. #12
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    bonjour
    j'ai réglé le problème puisque j'ai à copier tous les champs donc j'ai mit un select général, puisque la destination est figée dont l'alias est Consolid

    la table comporte 35 champs, dont plusieurs champs ont des noms de 8 à 10 caractères.et sont en majorité de type Alphabétique.

    dis moi si j'avais à séléctionner quelques champs comment écrire le code?
    avec un Select aussi long que ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CodDistr, CodStruc, CodeCFrai, CodEquip, LibEquip, CodNatEquip, LibNatEq, NumInvent, CodeMarq, LibMarqEq, CodeType, LibTypeEq, NumSeq, CodeEtat, LibEtatEq, CodNatProd, LibNatProd, NumSerie, Libelle, Chiffre, UnitMesur, CodGenreEq, Genre, AnneeMES, DateFinGar, Observation, NumDecAffect, DateAffect, Valeur, LibDist, LibeStr, LibCF, Matricule, ACode, CptLimiteConstruct, DatCptConstruct, AnneeAcquisit
    FROM "Equipement.DB" Equipement

  13. #13
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Si tu ne veux intégrer qu'une partie des champs, il faut que le nombre de champ et le type correspondent dans l'Insert et le Select de la requete.

    Exemple

    j'ai 5 champs dans Table 1 (Destination):
    Champ1,Champ2,Champ3,Champ4,Champ5

    et 3 champs dans Table 2 (Source):
    Champ1,Champ3,Champ4


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Insert into 'c:\Chemin\Table1.db' (Champ1,Champ3,Champ4)
    Select Champ1,Champ3,Champ4 from 'c:\Chemin\Table2.db'
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  14. #14
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    salut
    je crois que tu ne m'as pas compris
    l'erreur dit que la taille de ma chaine (ligne SQL à rajouter à la requette) dépasse les 255 caractères

    c'est à dire lorsque je met SQL.ADD('chaine');


    la chaine ne doit pas dépasser les 255 car, alors que mes l'ensemble des noms de mes champs dépassent cette limite

    do you understand?

  15. #15
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Ahhhhhh !! oui, j'etais complètement à l'ouest ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SQL.Add('SELECT CodDistr, CodStruc, CodeCFrai, CodEquip, LibEquip,');
    SQL.Add('CodNatEquip, LibNatEq, NumInvent, CodeMarq, LibMarqEq, CodeType, ');
    SQL.Add('LibTypeEq, NumSeq, CodeEtat, LibEtatEq, CodNatProd, LibNatProd, ');
    SQL.Add('NumSerie, Libelle, Chiffre, UnitMesur, CodGenreEq, Genre, AnneeMES, ');
    SQL.Add('DateFinGar, Observation, NumDecAffect, DateAffect, Valeur, LibDist, ');
    SQL.Add('LibeStr, LibCF, Matricule, ACode, CptLimiteConstruct, DatCptConstruct, AnneeAcquisit');
    SQL.Add('FROM "Equipement.DB" Equipement');
    Voila tout simplement.

    Le SQL n'est ni plus ni moins qu'une TStringList et en SQL tu peux faire des sauts de ligne assez facilement.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  16. #16
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    ah ok merci j'y pensais mais ma tête pensais à SQL.LINES.ADD !
    je me demande d'où j'ai sorti cette commande
    je te jure j'ai rien fumé

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

Discussions similaires

  1. [2012] Consolidation des bases de données
    Par yasssineho dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/12/2013, 17h12
  2. Consolidation des Bases de Données
    Par bluerequin dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/03/2009, 00h01
  3. Noms des bases de données
    Par abdou.sahraoui dans le forum Administration
    Réponses: 8
    Dernier message: 01/09/2004, 15h21
  4. structure des bases de données Palm
    Par nomdutilisateur dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/01/2004, 17h47
  5. Réponses: 3
    Dernier message: 24/10/2003, 21h46

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