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 :

Paradox et alter Table / table.deleteTable


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 64
    Points : 40
    Points
    40
    Par défaut Paradox et alter Table / table.deleteTable
    est-il possible de réaliser un alter table sur des tables Paradox ?

    si ce n'est pas le cas la solution consiste-t-elle à
    - créer une table temporaire avec les nouveaux champs,
    - insérer les enregistrements dans cette table temporaire,
    - supprimer la table originelle puis
    - renommer la table temporaire ?

    merci d'avance pour vos réponses

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 64
    Points : 40
    Points
    40
    Par défaut
    j'ai commencer à implémenter ma version sans le "alter" qui j'ai l'impression n'existe pas en paradox...

    mais je me retrouve face à un nouveau problème : renommer une table !!!

    est-ce que quelqu'un pourrait m'éclairer ???

  3. #3
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Oui via une query et le local SQL du BDE
    Cela depend de la version du BDE, avec la dernière 5.02, pas de problème
    je l'ai déja fait... ya longtemps.

    Regarde dans localSQL.hlp pour avoir plus d'information

    Sinon on peut utiliser les Api Dbi du BDE, voir BDE32.Hlp

    dans C:\program files\fichers communs\boreland shared\bde.... en général

    Il y a peut etre d'autres moyen

    Bonne chance ;-)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 64
    Points : 40
    Points
    40
    Par défaut
    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
     
         tableSource:=TTable(DataModule2.FindComponent(nomTable));
     
         // définition de la Table temp par copie de la table sélectionnée (tableSource)
         definiTTable('temp',tableSource);
     
         // définition du nouveau champs
         definirNewChamps('temp', nomChamps, typeChamps, tailleChamps);
     
         // création de la table dans la BDD avec les champs de la tableSource + le champs que l'on souhaite ajouter
         dataModule2.temp.CreateTable; 
     
         tableSource.Active:=false;
         // copie des enregistrements de la table de départ vers la table temp avec un TBatchMove
         dataModule2.BatchMove1.source:=tableSource;
         dataModule2.BatchMove1.destination:=dataModule2.temp;
         dataModule2.BatchMove1.Execute;
     
         tableSource.close;
        // tableSource.BatchMove(dataModule2.temp,batCopy);
     
         tableSource.DeleteTable;
         dataModule2.temp.RenameTable(nomTable);
    Or cela me fait un message d'erreur : "la table est occupée. table : typeSol" (tableSource)

    J'ai fait des affichage, et à priori c'est au niveau du deleteTable que ça plante...
    Quelles doivent être les conditions pour faire un deleteTable ? Ne suffit-il pas de passer la table en non-active ??

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 64
    Points : 40
    Points
    40
    Par défaut
    Si je ferme mon exécutable et que je fais le deleteTable puis le rename à sa réouverture, cela fonctionne....

    est-ce que vous auriez une idée d'où cela peut-il bien venir et comment faire pour ne pas avoir à fermer puis reouvrir l'exécutable ???

    merci d'avance pour vos réponses

  6. #6
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Essaye en mettant exclusive a true

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 64
    Points : 40
    Points
    40
    Par défaut
    En passant par l'inspecteur d'objet, si je met la propriété exclusive d'une table à true, alors lorsque je veux repasser la table en active, cela me met le message d'erreur "la table est occupée"...

    est-ce bien normal ???

  8. #8
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par lol_adele
    En passant par l'inspecteur d'objet, si je met la propriété exclusive d'une table à true, alors lorsque je veux repasser la table en active, cela me met le message d'erreur "la table est occupée"...

    est-ce bien normal ???
    Cela paut signifier que la table est déjà ouverte par un autre utilisateur, ou alors par un autre programme. Cela pourrait expliquer ton problème

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 64
    Points : 40
    Points
    40
    Par défaut
    En fait c'est très bizarre, pour reprendre du début, je suis en stage, je travaille sur une application existante avec une base de donnée.

    J'ai crée une petite application à côté où je fait des essai sur cette même base de donnée.

    A partir de l'application existante, les deleteTable fonctionne correctement et je peux effectivement passer la propriété exclusive à true....
    Par contre, ça ne fonctionne pas sous mon appli de test...

    je ne comprend vraiment pas

Discussions similaires

  1. ALTER plusieurs tables avec curseur et boucle
    Par abdelhamidem dans le forum PL/SQL
    Réponses: 7
    Dernier message: 13/05/2010, 20h49
  2. Erreur ALTER TABLE : table ou vue inexistante
    Par jpclabaux dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/05/2009, 18h06
  3. Problème avec un chemin de type "tables\table\tables\table"
    Par bankiz dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/09/2008, 22h25
  4. problème alter ignore table
    Par eric_chato9 dans le forum Débuter
    Réponses: 0
    Dernier message: 06/03/2008, 20h02
  5. mise a jour d'une table paradox avec une autre table sous delphi
    Par bobo2005 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/01/2007, 21h07

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