Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Bases de données
Bases de données Vos questions concernant les bases de données (BDE, Access, SqlServer...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/12/2012, 10h26   #1
mina24
Membre à l'essai
 
amina ait
Inscription : avril 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : amina ait

Informations forums :
Inscription : avril 2010
Messages : 51
Points : 22
Points : 22
Par défaut transfert de données entre deux bases de donnees firebird avec delphi 7

Bonjour!
Je voudrais savoir quel composant utilisé pour transférer des données d'une base à une autre (choix de la table , mise à jour et insertion),
je voudrais vous rappeler que je suis en train de passer du bde à firebird,
et avec le bde j'utilisais un composant très pratique Tbachmove.
Merci .
mina24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2012, 23h00   #2
Ph. B.
Expert Confirmé
 
Avatar de Ph. B.
 
Homme Philippe
Inscription : avril 2002
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 46
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2002
Messages : 1 026
Points : 2 651
Points : 2 651
Envoyer un message via ICQ à Ph. B. Envoyer un message via Skype™ à Ph. B.
Bonjour,
Citation:
Envoyé par mina24 Voir le message
Je voudrais savoir quel composant utilisé pour transférer des données d'une base à une autre (choix de la table , mise à jour et insertion),
S'agit-il d'opérations régulières (une fonctionnalité de votre logiciel) ou d'un transfert ponctuel (copie d'une base) ?
Citation:
Envoyé par mina24 Voir le message
je voudrais vous rappeler que je suis en train de passer du bde à firebird,
et avec le bde j'utilisais un composant très pratique Tbachmove.
Attention le BDE permet de dialoguer avec différents moteurs de bases de données en proposant des composants communs, Firebird est un moteur de base de données.
Je pense que vous vouliez parler de la migration d'une base Paradox gérée via le BDE vers une base Firebird gérée via dbexpress ? uib ? autre ?

Firebird 2.5 a introduit une clause spécifique pour accéder à une base tierce (ON EXTERNAL DATA SOURCE) pour l'instruction EXECUTE STATEMENT :
Code sql :
1
2
3
4
5
6
7
8
9
EXECUTE BLOCK RETURNS (colonne1 type1, colonne2 type2, ..., colonneN typeN) AS
BEGIN
   FOR EXECUTE STATEMENT 
      'SELECT colonne1, colonne2, ..., colonneN FROM ma_table'
      ON EXTERNAL DATA SOURCE 'localhost:ma_base_externe'
      AS USER 'utilisateur' PASSWORD 'mot_de_passe'
   INTO :colonne1, :colonne2, ..., :colonneN
   DO SUSPEND;
END
Il suffit ensuite d'insérer le résultat dans la table souhaitée.
__________________
Philippe.
Ph. B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2012, 08h00   #3
SergioMaster
Modérateur
 
Avatar de SergioMaster
 
Homme Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 4 209
Détails du profil
Informations personnelles :
Nom : Homme Serge Girard
Âge : 56
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 4 209
Points : 7 267
Points : 7 267
Une autre solution , quand on utilise un Firebird de version inférieure est d'utiliser FBCopy page accueil ou d'étudier les programmes sources exemple (clonedatabase) du package des composants UIB
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/12/2012, 14h57   #4
mina24
Membre à l'essai
 
amina ait
Inscription : avril 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : amina ait

Informations forums :
Inscription : avril 2010
Messages : 51
Points : 22
Points : 22
Merci pour vos réponses

Citation:
Envoyé par Ph. B. Voir le message
S'agit-il d'opérations régulières (une fonctionnalité de votre logiciel) ou d'un transfert ponctuel (copie d'une base) ?
Il s'agit bien d'une opération régulière j'aurais pu faire le transfert avec
Code :
1
2
3
4
5
 While not tablesource.eof do
  begin
insert ou bien edit
 tabledestinationChamp1.value:=tablesourcechamp1.value;
...etc
Seulement voila j'ai trouver que pour le transfert massif de données il fallait
faire toute une procédure http://gagneux.developpez.com/interbase/import-export/ .


Je vais essayer avec ce que vous m'avez proposer vous et SergioMaster Et je vous tiendrais au courant.
Merci .
mina24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2012, 10h03   #5
SergioMaster
Modérateur
 
Avatar de SergioMaster
 
Homme Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 4 209
Détails du profil
Informations personnelles :
Nom : Homme Serge Girard
Âge : 56
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 4 209
Points : 7 267
Points : 7 267
Il s'agit d'une réplication de BDD ?
De quelle version Firebird s'agit-il ?
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 08h35   #6
mina24
Membre à l'essai
 
amina ait
Inscription : avril 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : amina ait

Informations forums :
Inscription : avril 2010
Messages : 51
Points : 22
Points : 22
Citation:
Envoyé par SergioMaster Voir le message
Il s'agit d'une réplication de BDD ?
De quelle version Firebird s'agit-il ?
Il s'agit de firebird 2.5 (delphi7) j'utilise les composants mdo



Mina 24
mina24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 10h15   #7
SergioMaster
Modérateur
 
Avatar de SergioMaster
 
Homme Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 4 209
Détails du profil
Informations personnelles :
Nom : Homme Serge Girard
Âge : 56
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 4 209
Points : 7 267
Points : 7 267
puisque c'est un FB 2.5 j'opterais pour une procédure comme proposée par Phillippe avec un INSERT OR UPDATE à la place du suspend , à tester , je ne suis pas encore passé a 2.5
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 09h27   #8
mina24
Membre à l'essai
 
amina ait
Inscription : avril 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : amina ait

Informations forums :
Inscription : avril 2010
Messages : 51
Points : 22
Points : 22
Bonjour
Citation:
Envoyé par Ph. B. Voir le message

Code sql :
1
2
3
4
5
6
7
8
9
EXECUTE BLOCK RETURNS (colonne1 type1, colonne2 type2, ..., colonneN typeN) AS
BEGIN
   FOR EXECUTE STATEMENT 
      'SELECT colonne1, colonne2, ..., colonneN FROM ma_table'
      ON EXTERNAL DATA SOURCE 'localhost:ma_base_externe'
      AS USER 'utilisateur' PASSWORD 'mot_de_passe'
   INTO :colonne1, :colonne2, ..., :colonneN
   DO SUSPEND;
END
Il suffit ensuite d'insérer le résultat dans la table souhaitée.
J'ai essayer le code il fonctionne parfaitement ,seulement je ne sait pas comment faire pour récupérer les données dans ma table
Merci
mina24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 12h38   #9
Ph. B.
Expert Confirmé
 
Avatar de Ph. B.
 
Homme Philippe
Inscription : avril 2002
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 46
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2002
Messages : 1 026
Points : 2 651
Points : 2 651
Envoyer un message via ICQ à Ph. B. Envoyer un message via Skype™ à Ph. B.
Bonjour,
Citation:
Envoyé par mina24 Voir le message
J'ai essayer le code il fonctionne parfaitement ,seulement je ne sait pas comment faire pour récupérer les données dans ma table
@SergioMaster vous l'a indiqué dans le message précédent...
Soit vous faites l'insertion en récupérant le résultat extrait du bloc, sans rien changer, soit vous modifiez le bloc pour qu'il fasse tout le traitement :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
EXECUTE BLOCK AS
DECLARE colonne1 type1;
DECLARE colonne2 type2;
...
DECLARE colonneN typeN;
BEGIN
   FOR EXECUTE STATEMENT 
      'SELECT colonne1, colonne2, ..., colonneN FROM ma_table'
      ON EXTERNAL DATA SOURCE 'localhost:ma_base_externe'
      AS USER 'utilisateur' PASSWORD 'mot_de_passe'
   INTO :colonne1, :colonne2, ..., :colonneN
   DO 
      INSERT INTO MA_Table_Destination(col1, col2, ..., colN)
         VALUES(:colonne1, : colonne2, :colonneN);
END
  1. N'oubliez pas de valider les transactions
  2. Pensez aux risques de violation de clé primaire si la table de destination n'est pas vide.
  3. Pensez aux exceptions si les données copiées ne satisfont pas les conditions de la table de destination
__________________
Philippe.
Ph. B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 16h35   #10
mina24
Membre à l'essai
 
amina ait
Inscription : avril 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : amina ait

Informations forums :
Inscription : avril 2010
Messages : 51
Points : 22
Points : 22
Merci beaucoup, Ça marche
mina24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h58.


 
 
 
 
Partenaires

Hébergement Web