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 :

Destruction/parcours de tables


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut Destruction/parcours de tables
    Bonjour,
    Je dispose en vb d'une fonction qui copie une base de données dans une autre, en parcourant ses tables. Après l'avoir migré en delphi, ça a donné du n'importe quoi. Pour le parcours des tables de la bd, je n'ai trouvé aucune propriété du type tdatabase permettant de compter les tables ; en mettant les tables dans une tstringlist, je peux récupérer leur nombre. A un moment donnée, un bout de code se charge de détruire une table ayant un nom spécifique (entré en param à la fonction) , malheureusement, je n'ai pas trouvé de méthode en delphi qui detruise une table. Help me !

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 107
    Par défaut
    Essaye la fonction de DELPHI
    Table1.Destroy;

  3. #3
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    Citation Envoyé par ProgD
    Essaye la fonction de DELPHI
    Table1.Destroy;
    Destroy détruira l'objet TTable et non la Table,le mieux c'est une requête SQL

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    DROP TABLE VotreTable


    Citation Envoyé par AL1986
    Bonjour,
    Je dispose en vb d'une fonction qui copie une base de données dans une autre, en parcourant ses tables. Après l'avoir migré en delphi, ça a donné du n'importe quoi. Pour le parcours des tables de la bd, je n'ai trouvé aucune propriété du type tdatabase permettant de compter les tables ; en mettant les tables dans une tstringlist, je peux récupérer leur nombre. A un moment donnée, un bout de code se charge de détruire une table ayant un nom spécifique (entré en param à la fonction) , malheureusement, je n'ai pas trouvé de méthode en delphi qui detruise une table. Help me !
    l'inspecteur d'objet de delphi (vous avez bien une liste déroulante qui liste toutes vos tables)le fait donc tu peut le faire.

    Citation Envoyé par AL1986
    je n'ai trouvé aucune propriété du type tdatabase permettant de compter les tables ; en mettant les tables dans une tstringlist
    tu est sure,en plus la question et référencer dans la FAQ pour interbase et c'est la même chose pour le BDE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Database1.GetTableNames(List);

  4. #4
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut
    Salut,
    J'avais déjà essayé d'utiliser la propriété destroy mais sans résultat, d'autant plus que je n'arrive pas à récupérer une table de type ttable à partir de la base de données.
    J'ai aussi essayé en émettant une requête sql du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mabase.execute('drop table "matable")
    et je pense que cela marche, je doit faire d'autres tests pour en avoir le coeur net.
    Sinon en disant :
    je n'ai trouvé aucune propriété du type tdatabase permettant de compter les tables ; en mettant les tables dans une tstringlist, je peux récupérer leur nombre.
    La première affirmation se termine au ";" et donc je disais que j'ai effectivement été obligé d'utiliser une liste de chaîne alors que j'espérais trouver une propriété de ma base qui puisse le faire sans avoir recours à tstringlist.
    Je préfère encore effectuer quelques tests avant de classer ce problème comme résolu. Merci.

  5. #5
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 542
    Billets dans le blog
    10
    Par défaut
    Pour PARADOX une base de données est un ensemble de tables stockées dans différent fichiers sur un répertoire. Chaque table comporte au moins un fichier ayant l'extension ".db" donc tu peux utiliser l'enumération de ces fichiers ".db" pour compter tes tables.
    Pour copier une table paradox vers une autre utilises la procédure "BatchCopy"

  6. #6
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut
    Salut,
    En exécutant deux requêtes à la suite :
    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    db.Execute('drop table "table1"',nil,false,nil);
    db.Execute('drop table "table2"',nil,false,nil);
    sans utiliser de liste dans laquelle je récupère les tables, la première passe et la deuxième non, si je déclare une liste dans laquelle je mets les tables sans l'utiliser après :
    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    base.GetTableNames(liste,false);
    les deux requêtes passent.
    Quelqu'un aurait-il une expication. Merci

  7. #7
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    Voici une fonction clé en main.

    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
    Function DetruireTable(Data:TDatabase;MaTable:String;Var Err:Integer):Boolean;
       Var Tables : TStringList;
             I:Integer;
      Begin
         Err :=0;
         Result := True;
         Try
           Tables := TStringList.Create;
           Data.GetTableNames(Tables) ;
           if Tables.Count <> 0 Then
              Begin
                I:= Tables.IndexOf(MaTable);
                if  (I <> -1 ) Then
                  Data.Execute('DROP TABLE '+Tables[I])
                else
                  Begin
                    Err:=1; // Table Introuvable
                    Result:=False
                  end;
              end
                else
              Begin
                  Err:=2;  //Base de données Vide.
                  Result:=False
              end;
         except
           Err:=3; //Erreur Inconu;
           Result:=False
         end;
      end;

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/08/2010, 16h07
  2. Parcours de table
    Par Portus dans le forum Requêtes
    Réponses: 9
    Dernier message: 10/06/2009, 07h58
  3. [WD11] Parcours de table qui ne marche pas
    Par dj_techno dans le forum WinDev
    Réponses: 2
    Dernier message: 03/02/2009, 15h52
  4. Besoin d'aide pour parcours de table SQL Server
    Par Monkey_D.Luffy dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/06/2008, 09h40

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