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

InterBase Discussion :

interbase completement idiot ?


Sujet :

InterBase

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Points : 66
    Points
    66
    Par défaut interbase completement idiot ?
    Bonjour à tous je develloppe une applic pour gerer des facturations multitiers en maisons de retraites, et je dois avouer qu'interbase commence à m'ennerver, en effet j'ai fait script sql pour intialiser tout ça rappidement, et presque rien ne marche à par les drop table et create table, generator et triggers ne passent pas, je ne vois pas d'erreurs dans mes syntaxes,même les commentaires sql de base sont pas supportés ... , etant sur le forum d'interbase, j'espère que vous pourrez m'aider pasque je craque :

    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    --Partie sur les résidents
    drop table RESIDENT;
    create table RESIDENT(
    NUMRES                          INTEGER not NULL,
    NOM                             VARCHAR(30),
    ADRESSE_1                       VARCHAR(32),
    ADRESSE_2                       VARCHAR(32),
    VILLE                            VARCHAR(32),
    CODEPOSTAL                      VARCHAR(10),
    TELEPHONE                       VARCHAR(10),
    FAX                             VARCHAR(10),
    ETABL                            VARCHAR(5),
    GUICHET                            VARCHAR(5),
    COMPTE                            VARCHAR(11),
    CLEF_RIB                        VARCHAR(2),
    BANQUE_ADR_1                    VARCHAR(32),
    BANQUE_ADR_2                    VARCHAR(32),
    RESPONSABLE                        VARCHAR(30),
    AUTRES                            VARCHAR(250),
    constraint resident_pkey         primary key (NUMRES)
    );
     
    drop generator GEN_NUMRES;
    CREATE GENERATOR GEN_NUMRES;
    SET GENERATOR GEN_NUMRES TO 0
     
    drop TRIGGER TRIG_GEN_NUMRES;
    CREATE TRIGGER TRIG_GEN_NUMRES FOR RESIDENT AFTER INSERT POSITION 0 AS
    BEGIN
    NEW.NUMRES = GEN_ID(GEN_NUMRES,1);
    END
     
    drop table PLANNING;
    create table PLANNING(
    NUMRES                            INTEGER not NULL,
    NUMPROD                            INTEGER not NULL,
    DATE_PLAN                        VARCHAR(10) not NULL,
    constraint planning_pkey         primary key (NUMRES,NUMPROD,DATE_PLAN)
    );
     
     
    --Partie sur les organismes
    drop table ORGANISME;
    create table ORGANISME(
    CODE                            INTEGER not NULL,
    NOM                             VARCHAR(30),
    ADRESSE_1                       VARCHAR(32),
    ADRESSE_2                       VARCHAR(32),
    VILLE                            VARCHAR(32),
    CODEPOSTAL                      VARCHAR(10),
    TELEPHONE                       VARCHAR(10),
    FAX                             VARCHAR(10),
    constraint organisme_pkey         primary key (CODE)
    );
     
    drop GENERATOR GEN_CODE;
    CREATE GENERATOR GEN_CODE;
    SET GENERATOR GEN_CODE TO 0
     
    drop TRIGGER TRIG_GEN_CODE;
    CREATE TRIGGER TRIG_GEN_CODE FOR ORGANISME BEFORE INSERT POSITION 0 AS
    BEGIN
    NEW.CODE = GEN_ID(GEN_CODE,1);
    END
     
     
    drop table ORGAFACT;
    create table ORGAFACT(
    CODE                            INTEGER not NULL,
    NUMFACT                            INTEGER not NULL,
    NUMRES                            INTEGER,
    PART                            REAL,
    CODEPAIEMENT                    INTEGER,
    ADRESSE_1                       VARCHAR(32),
    ADRESSE_2                       VARCHAR(32),
    VILLE                            VARCHAR(32),
    CODEPOSTAL                      VARCHAR(10),
    constraint orgafact_pkey         primary key (CODE,NUMFACT)
    );
     
    drop table ORGAPROD;
    create table ORGAPROD(
    CODE                            INTEGER not NULL,
    NUMPROD                            INTEGER not NULL,
    PART                            REAL,
    constraint orgaprod_pkey         primary key (CODE,NUMPROD)
    );
     
    drop table ORGA_AIDE;
    create table ORGA_AIDE(
    CODE                            INTEGER not NULL,
    NUMRES                            INTEGER not NULL,
    PART                            REAL,
    constraint orga_aide_pkey         primary key (CODE,NUMRES)
    );
     
     
    --Partie produits
    drop table PRODUIT;
    create table PRODUIT(
    NUMPROD                         INTEGER not NULL,
    NOM                                VARCHAR(30),
    TYPEPROD                        VARCHAR(30),
    PRIX_UNITE_HT                   REAL,
    CODE_TVA                        Integer,
    DESCRPROD                       VARCHAR(250),
    constraint produit_pkey         primary key (NUMPROD)
    );
     
    drop GENERATOR GEN_NUMPROD;
    CREATE GENERATOR GEN_NUMPROD;
    SET GENERATOR GEN_NUMPROD TO 0
     
    drop TRIGGER TRIG_GEN_NUMPROD;
    CREATE TRIGGER TRIG_GEN_NUMPROD FOR PRODUIT BEFORE INSERT POSITION 0 AS
    BEGIN
    NEW.NUMPROD = GEN_ID(GEN_NUMPROD,1);
    END
     
    drop table PRODFACT;
    create table PRODFACT(
    NUMPROD                            INTEGER not NULL,
    NUMFACT                            INTEGER not NULL,
    QTPROD                            INTEGER,
    NOMPROD                            VARCHAR(30),
    CODETVA                            REAL,
    PRIX_LOT_HT                        REAL,
    constraint prodfact_pkey         primary key (NUMPROD,NUMFACT)
    );
     
     
    --Partie financière
    drop table TYPEPAIEMENT;
    create table TYPEPAIEMENT(
    CODEPAIEMENT                    INTEGER not NULL,
    NOMPAIEMENT                     VARCHAR(30),
    DESCR                           VARCHAR(250),
    constraint typepaiement_pkey     primary key (CODEPAIEMENT)
    );
     
    drop GENERATOR GEN_CODEPAIEMENT;
    CREATE GENERATOR GEN_CODEPAIEMENT;
    SET GENERATOR GEN_CODEPAIEMENT TO 0
     
    drop TRIGGER TRIG_GEN_CODEPAIEMENT;
    CREATE TRIGGER TRIG_GEN_CODEPAIEMENT FOR TYPEPAIEMENT BEFORE INSERT POSITION 0 AS
    BEGIN
    NEW.CODEPAIEMENT = GEN_ID(GEN_CODEPAIEMENT,1);
    END
     
     
    drop table TVA;
    create table TVA(
    CODETVA                            INTEGER not NULL,
    NOM                                VARCHAR(20),
    VALEUR                            REAL,
    constraint tva_pkey             primary key (CODETVA)
    );
    drop GENERATOR GEN_CODETVA;
    CREATE GENERATOR GEN_CODETVA;
    SET GENERATOR GEN_CODETVA TO 0
     
    drop TRIGGER TRIG_GEN_CODETVA;
    CREATE TRIGGER TRIG_GEN_CODETVA FOR TVA BEFORE INSERT POSITION 0 AS
    BEGIN
    NEW.CODETVA = GEN_ID(GEN_CODETVA,1);
    END
     
     
    drop table FACTURE;
    create table FACTURE(
    NUMFACT                         INTEGER not NULL,
    NUMRES                          INTEGER not NULL,
    CODEPAIEMENT                    INTEGER,
    DATECREATE                      VARCHAR(10),
    LIBELLE                         VARCHAR(50),
    TOTAL_TTC                        REAL,
    TOTAL_HT                        REAL,
    ADRESSE_1                       VARCHAR(32),
    ADRESSE_2                       VARCHAR(32),
    VILLE                            VARCHAR(32),
    CODEPOSTAL                      VARCHAR(10),
    DESCRFACT                        VARCHAR(250),
    constraint facture_pkey         primary key (NUMFACT)
    );
     
     
    --Table spéciale pour gérer facilement les numéros de facture sans triggers
    drop table COMPTEUR;
    create table COMPTEUR(
    IDCOMPTEUR                        INTEGER not NULL,
    NUMFACT                            INTEGER,
    constraint compteur_pkey         primary key (IDCOMPTEUR)
    );
    ps: désolé d'avoir tout balancé comme ça mais disons que ça vous fait de la lecture ;-)
    Sinon les erreurs ça varie des erreurs générales sql à token unknown , et ça m'enneeeeeeerveuuuuhhhhhh
    Enfin voilà merci d'avance.

    [edit] j'ai trouvé pour les drop generator faut faire delete bla bla ... mais ça marche pas, je tiens à dire que je tourne en interbase open source ...
    [edit2] ha oui un autre truc, vu que j'ai mis le script en entier, ça serais super sympa si vous testiez avant de proposer des solutions

  2. #2
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Pour la réponse au sujet "interbase completement idiot ? Répondre à la discussion" évidement que non...

    Les messages d'erreurs ne sont pas explicites ?

    Car de mon coté je note 2 erreurs (répettées plusieurs fois) :
    1) Quand on créé un générateur, on prévient que c'est finit en ponctuant d'un point-virgule a la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET GENERATOR GEN_CODE TO 0;
    2) Aussi bien pour les trigger que pour les procédures stockées, on fait le coup du SET TERM pour éviter la confusion des point-virgule du corps des objets et des instructions de scripts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SET TERM ^ ;
    
    CREATE TRIGGER TRIG_GEN_NUMRES FOR RESIDENT AFTER INSERT POSITION 0 AS
    BEGIN
      NEW.NUMRES = GEN_ID(GEN_NUMRES,1);
    END
    ^
    
    SET TERM ; ^
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Points : 66
    Points
    66
    Par défaut
    Merci d'avoir répondu neilbgr, j'avais finis par trouver tout seul, pour info le point virgule il s'en fout royale, ensuite le delete ne marche pas, il me fait planter interbase, mais c'est pas important de dropper un generateur, juste le reinitialiser de temps en temps, sinon oui les triggers devaient être comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    drop TRIGGER TRIG_GEN_NUMRES;
    SET TERM ^ ;
    CREATE TRIGGER "TRIG_GEN_NUMRES" FOR "RESIDENT" ACTIVE BEFORE INSERT POSITION 0 AS
    BEGIN
    NEW.NUMRES = GEN_ID(GEN_NUMRES,1);
    END
     ^
    COMMIT WORK ^
    SET TERM ;^
    Donc voilà je dis pas particulièrement bravo aux syntaxe d'interbase, c'est dommage il semble plutot robuste, je continuerai à preferer de loin postgress que j'ai toujours reussit à faire marcher ...
    Sinon maintenant ça marche, à part toujours le probleme du delete, soit il plante interbase, soit il me parle d'un probleme d'index dupliqué, c'est pas grave, j'y survivrais
    Sinon oui un dernier truc les commentaires sont pas réspéctés , il faut pas utiliser
    Mais Ca aurait quand même été bien de respecter les standards.

  4. #4
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Est-ce Interbase ou Firebird ?

    J'ai également eu des ennuies avec les commentaires, et effectivement seuls les commentaires entre /* */ sont actuellement acceptés.

    Pour les drops, s'il n'y a rien a dropper c'est normal qu'il râle (mais delà à planter... d'où ma première question)

    Enfin, pour "postgress" vs Firebird, je pense qu'il y a du bon pour les deux, et très probablement du moins bon aussi... Surement une question d'habitude !

    Si tu as completement corrigé ton script, je peux le tester si tu veux. (avec Firebird 1.5).
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  5. #5
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Après recherche concernant les soucis de commentaires SQL :
    a lire : http://firebird.sourceforge.net/inde...ormance&nosb=1

    E161 : SQL comments using leading double minus: Ok in Firebird 1.5 and >
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

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

Discussions similaires

  1. action APRES chargement complet ...
    Par PinGuy dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2006, 17h16
  2. [Kylix] interbase
    Par okeefe dans le forum EDI
    Réponses: 3
    Dernier message: 17/10/2002, 17h56
  3. [interbase]Se logger après une première installation
    Par Ultra-FX dans le forum InterBase
    Réponses: 3
    Dernier message: 13/09/2002, 11h44
  4. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15
  5. code pour interbase 6.0 et 6.5 de generateur
    Par tripper.dim dans le forum InterBase
    Réponses: 4
    Dernier message: 01/07/2002, 11h29

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