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

PowerAMC Discussion :

PowerAMC 12 - Modification d'un datatype


Sujet :

PowerAMC

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut PowerAMC 12 - Modification d'un datatype
    Bonjour,

    Je suis entrain de tester la version 12 de PowerAMC. J'essaie de modifier un datatype char(4) à numeric(4) sur une table et lorsque le script de modification est généré, je reçois un avertissement
    Les commandes Insert ne pourront pas restaurer les données de table temporaire. Corriger les commandes Insert précédées de Avertissement dans le script.

    Est-ce qu'il y façon de généré le convert dans les commandes Insert comme dans les dernières versions de PowerAMC ??

    Merci de me répondre s.v.p.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 112
    Points
    112
    Par défaut Datatype
    Bonjour

    Qu'est-ce que tu entends par :
    Est-ce qu'il y façon de généré le convert dans les commandes Insert comme dans les dernières versions de PowerAMC ??
    La plupart des bases de données propose la conversion implicite de type comme par exemple le numeric vers char mais pas dans le sens char vers numeric.
    Si tu es sûr que ton champ de type char contient uniquement des données de type numeric, tu peux utiliser les fonctions de conversion comme TO_NUMBER pour une base ORACLE ou CNum pour ACCESS dans le script que tu as généré.

    Cdlt

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut lidoei
    Voici un exemple de script généré lors du changement du datatype numeric(2) pour char(2). Voir le message d'AVERTISSEMENT lors du Insert

    /*==============================================================*/
    /* Nom de SGBD : Microsoft SQL Server 2005 */
    /* Date de création : 2006-10-17 09:42:14 */
    /*==============================================================*/


    alter table eid2200_valeur_unitaire
    drop constraint FK_EID2200__DONNE_UNE_EIT2100_
    go

    alter table eit2101_fonds
    drop constraint FK_EIT2101__ASSOCIATI_EIT2100_
    go

    alter table eit2100_fonds_fu_evalue
    drop constraint PK_EIT2100_FONDS_FU_EVALUE
    go

    if exists (select 1
    from sysobjects
    where id = object_id('tmp_eit2100_fonds_fu_evalue')
    and type = 'U')
    drop table tmp_eit2100_fonds_fu_evalue
    go

    /*==============================================================*/
    /* Table : tmp_eit2100_fonds_fu_evalue */
    /*==============================================================*/
    create table tmp_eit2100_fonds_fu_evalue (
    cd_fds_evalue char(8) not null,
    cd_corpo_ctb char(3) not null,
    cd_fds_ctb char(5) not null,
    cd_cat_fds_risque char(3) not null,
    cd_freq_evaluation char(1) not null,
    cd_jour_evaluation numeric(2) not null,
    cd_fds_indiv_coll char(1) not null,
    ind_contenu_etranger char(1) not null,
    no_fds_rempl int null,
    pct_revenu numeric(6,3) not null,
    pct_canadien numeric(6,3) not null,
    pct_specialise numeric(6,3) not null,
    pct_international numeric(6,3) not null,
    dt_debut_evaluation datetime null,
    dt_fin_evaluation datetime null,
    dt_prochaine_evaluation datetime null,
    dt_derniere_evaluation datetime null,
    dt_dern_maj datetime not null,
    cd_usager_dern_maj char(12) not null,
    ts timestamp not null
    )
    go

    insert into tmp_eit2100_fonds_fu_evalue (cd_fds_evalue, cd_corpo_ctb, cd_fds_ctb, cd_cat_fds_risque, cd_freq_evaluation, cd_jour_evaluation, cd_fds_indiv_coll, ind_contenu_etranger, no_fds_rempl, pct_revenu, pct_canadien, pct_specialise, pct_international, dt_debut_evaluation, dt_fin_evaluation, dt_prochaine_evaluation, dt_derniere_evaluation, dt_dern_maj, cd_usager_dern_maj)
    select cd_fds_evalue, cd_corpo_ctb, cd_fds_ctb, cd_cat_fds_risque, cd_freq_evaluation, cd_jour_evaluation, cd_fds_indiv_coll, ind_contenu_etranger, no_fds_rempl, pct_revenu, pct_canadien, pct_specialise, pct_international, dt_debut_evaluation, dt_fin_evaluation, dt_prochaine_evaluation, dt_derniere_evaluation, dt_dern_maj, cd_usager_dern_maj
    from eit2100_fonds_fu_evalue
    go

    if exists (select 1
    from sysobjects
    where id = object_id('eit2100_fonds_fu_evalue')
    and type = 'U')
    drop table eit2100_fonds_fu_evalue
    go

    /*==============================================================*/
    /* Table : eit2100_fonds_fu_evalue */
    /*==============================================================*/
    create table eit2100_fonds_fu_evalue (
    cd_fds_evalue char(8) not null,
    cd_corpo_ctb char(3) not null,
    cd_fds_ctb char(5) not null,
    cd_cat_fds_risque char(3) not null,
    cd_freq_evaluation char(1) not null,
    cd_jour_evaluation char(2) not null,
    cd_fds_indiv_coll char(1) not null,
    ind_contenu_etranger char(1) not null,
    no_fds_rempl int null,
    pct_revenu numeric(6,3) not null,
    pct_canadien numeric(6,3) not null,
    pct_specialise numeric(6,3) not null,
    pct_international numeric(6,3) not null,
    dt_debut_evaluation sdt null,
    dt_fin_evaluation sdt null,
    dt_prochaine_evaluation sdt null,
    dt_derniere_evaluation sdt null,
    dt_dern_maj datetime not null,
    cd_usager_dern_maj char(12) not null,
    ts timestamp not null,
    constraint PK_EIT2100_FONDS_FU_EVALUE primary key nonclustered (cd_fds_evalue)
    )
    go

    --AVERTISSEMENT : La commande insert suivante ne restaurera pas les colonnes :[/B] cd_jour_evaluation
    insert into eit2100_fonds_fu_evalue (cd_fds_evalue, cd_corpo_ctb, cd_fds_ctb, cd_cat_fds_risque, cd_freq_evaluation, cd_jour_evaluation, cd_fds_indiv_coll, ind_contenu_etranger, no_fds_rempl, pct_revenu, pct_canadien, pct_specialise, pct_international, dt_debut_evaluation, dt_fin_evaluation, dt_prochaine_evaluation, dt_derniere_evaluation, dt_dern_maj, cd_usager_dern_maj)
    select cd_fds_evalue, cd_corpo_ctb, cd_fds_ctb, cd_cat_fds_risque, cd_freq_evaluation, ?, cd_fds_indiv_coll, ind_contenu_etranger, no_fds_rempl, pct_revenu, pct_canadien, pct_specialise, pct_international, dt_debut_evaluation, dt_fin_evaluation, dt_prochaine_evaluation, dt_derniere_evaluation, dt_dern_maj, cd_usager_dern_maj
    from tmp_eit2100_fonds_fu_evalue
    go

    --AVERTISSEMENT : suppression annulée en raison de l'impossibilité de restaurer les colonnes : cd_jour_evaluation
    --if exists (select 1
    -- from sysobjects
    -- where id = object_id('tmp_eit2100_fonds_fu_evalue')
    -- and type = 'U')
    -- drop table tmp_eit2100_fonds_fu_evalue
    --go
    alter table eid2200_valeur_unitaire
    add constraint FK_EID2200__DONNE_UNE_EIT2100_ foreign key (cd_fds_evalue)
    references eit2100_fonds_fu_evalue (cd_fds_evalue)
    go

    alter table eit2101_fonds
    add constraint FK_EIT2101__ASSOCIATI_EIT2100_ foreign key (cd_fds_evalue)
    references eit2100_fonds_fu_evalue (cd_fds_evalue)
    go

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 112
    Points
    112
    Par défaut conversion de type
    J'utilise actuellement la version 10 de powerAMC et ce "problème" de conversion exite déjà dans cette version.

    Si tu veux que ton script fonctionne, il te suffit de remplacer le "?" par la fonction de conversion qui va bien (utilisation de CONVERT ou CAST).

    Dans ton exemple, tu peux remplacer ? par CAST(cd_jour_evaluation as char).

    Mais comme SQL Server 2005 est un SGBD évolué, tu peux te contenter de remplacer ? par cd_jour_evaluation car SQL Server 2005 fait la conversion de type implicitement.

    Par contre PowerAMC ne génère pas automatiquement les clauses de conversion de type, à moins peut être d'aller modifier les caractéristiques du SGBD courant mais je ne vois pas trop comment en V10. C'est peut être possible en V12.

    Cdlt

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/03/2012, 14h32
  2. [VB6] modification de menu
    Par rikko23 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/11/2002, 21h30
  3. [] Datagrid vide après modification des propriétés
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/09/2002, 16h37
  4. Modification de l'évènement OnClick
    Par MrJéjé dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2002, 12h52
  5. Réponses: 11
    Dernier message: 23/07/2002, 14h33

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