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 :

Problème de sqlConnection et nom de la base


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chercheur - Programmeur amateur
    Inscrit en
    Août 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur - Programmeur amateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2005
    Messages : 65
    Par défaut Problème de sqlConnection et nom de la base
    Bonjour à tous,

    Voila, je souhaiterais savoir comment passer PAR CODE, le nom de la base de données à utiliser à un SQLConnection.

    Merci d'avance

    Bon en fait, j'ai en partie trouvé, mais il subsiste un probleme.
    Pk ce code ne marche-t-il pas?
    En effet, si je donne un nom dans l'edit, et que je clique successivement sur les 3 boutons, je recois une erreur disant que la table RELEVE existe deja...

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, JvComponentBase, JvUIB, WideStrings, FMTBcd, DB, SqlExpr,
      DBClient, Grids, DBGrids, Provider;
     
    type
      TForm1 = class(TForm)
        JvUIBDataBase1: TJvUIBDataBase;
        Button1: TButton;
        JvUIBTransaction1: TJvUIBTransaction;
        Button2: TButton;
        Edit1: TEdit;
        DBGrid1: TDBGrid;
        Button3: TButton;
        SQLConnection1: TSQLConnection;
        SQLQuery1: TSQLQuery;
        DataSetProvider1: TDataSetProvider;
        ClientDataSet1: TClientDataSet;
        DataSource1: TDataSource;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Edit1Change(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
      dbname : string;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with JvUIBDatabase1 do
            begin
              DatabaseName:= dbname;
              SqlDialect:= 3;
     
              Params.Add('USER "SYSDBA"');
              Params.Add('PASSWORD "masterkey"');
              Params.Add('PAGE_SIZE 4096');
     
              CreateDatabase;
            end;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      with SqlQuery1 do
            begin
              Close;
     
              with Sql do
              begin
                Clear;
                Add('CREATE TABLE RELEVE');
                Add('  ('
                    +'    Pk_Rel INTEGER NOT NULL,');
                Add('     Jour SMALLINT,');
                Add('     Mois SMALLINT,');
                Add('     heure SMALLINT,');
                Add('     Temperature_min SMALLINT,');
                Add('     Temperature_max SMALLINT');
                Add('   )');
              end;
     
              Try
                ExecSql;
              except
              end;
            end;
    end;
     
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      ClientDataSet1.Active:=True;
    end;
     
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      dbname:='d:\Delphi\'+Edit1.Text+'.met';
      SQLConnection1.Params.CommaText:='Database='+dbname;
    end;
     
    end.

  2. #2
    Membre confirmé
    Homme Profil pro
    Chercheur - Programmeur amateur
    Inscrit en
    Août 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur - Programmeur amateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2005
    Messages : 65
    Par défaut
    bien, après quelques tests supplémentaires, il semble qu'il soit impossible d'utiliser le même sqlquery... Si j'utilise un autre SQLQuery pour la requête que celui utilisé pour créer la table, ca marche.
    Je suppose donc que j'oublie de faire une action après avoir créé ma table, mais quelle action? J'ai essayé SQLQuery.Close, mais ça ne résout pas le pb.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    peut-être oublies-tu start transaction et commit ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Chercheur - Programmeur amateur
    Inscrit en
    Août 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur - Programmeur amateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2005
    Messages : 65
    Par défaut
    Bon problème resolu

    En fait, j'avais renseigné une requête SQL dans la propriété SQL de l'éditeur (SELECT * From RELEVE) pour mon SQLQuery pour effectuer l'action du bouton 3
    Or j'oubliais de faire un SQL.Clear après l'action de mon bouton 2
    Du coup, quand je cliquais sur le bouton 3, je me retrouvais avec 2 requête : la création de la table, et la recherche. Or, il est bien évidemment impossible de créer la table 2 fois

    bref, erreur de débutant (mais vu que j'en suis un, c'est pas étonnant )

    Merci

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

Discussions similaires

  1. Récupérer le nom de la base courante
    Par Mr N. dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/10/2004, 11h34
  2. Réponses: 2
    Dernier message: 20/08/2004, 17h10
  3. Problémes mémoire avec le bde sur des bases paradox
    Par Keke des Iles dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/05/2004, 16h55
  4. Récupérer le nom d'une base
    Par nic_moq dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 24/03/2004, 10h50
  5. Modifier le nom d'une base de donnée avec erreur sy
    Par mmn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/11/2003, 10h12

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