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 :

Firedac - Ajouter 1 colonne absente de la table


Sujet :

Bases de données Delphi

  1. #1
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut Firedac - Ajouter 1 colonne absente de la table
    Bonjour,

    Ma question du jour vient certainement d'une incompréhension quant à la "bonne" approche de mon sujet.

    J'ai 1 table comportant des séries de mesures de pression, chaque série a 1 nb variable de mesures et est à considérer comme "slave" d'une table "master" contenant le n° de la série.

    Cherchant à construire 1 courbe avec ces mesures, je teste les compos RiverSoftAVG (6.8) en version PE et notamment le DBLineChart (DBaware donc) mais je suis confronté au fait que ma série de mesures ne dispose d'aucun élément d'horodatage. Je sais juste que l'écart entre chaque mesure est de 5 secondes (l'ordre des mesures est assuré pas 1 colonne auto-incrément).

    Évidemment, le compos demande les données pour l'axe X afin d'assures le tracé!

    J'ai tenté d'ajouter un champ "manuel" dans le FDQuery (Ok) afin d'y définir les valeurs {0,5,10,15,...} et satisfaire l'attente du compo.

    Mais je n'arrive pas à alimenter ce champ "manuel" car la FDQuery s'entête à rester en dsBrowse malgré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if not (ProfQr.State in [dsEdit,dsinsert]) then
            ProfQr.Edit;
    Je ne vois pas où est mon erreur.

    Merci par avance.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    euh...la colonne n'est pas absente puisque tu dis que c'est l'ID qui sert à compter le temps...

    un champ "manuel" ? tu veux dire un champ calculé ? dans ce cas il faut définir l'évènement OnCalcFields
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par qi130 Voir le message
    Mais je n'arrive pas à alimenter ce champ "manuel" car la FDQuery s'entête à rester en dsBrowse
    Logique parce que la colonne ne fait pas réellement partie de la table de la base de données.
    Le champ calculé est une méthode nécessitant la déclaration des colonnes et l'ajout du champ (clic droit sur TQuery, déclarer les champs, ajouter un champ de type fdCalc)

    Perso, je verrai plutôt l'obtention de cette valeur via le SQL directement. Si mes souvenirs sont bons, il s'agit de Firebird version 2.1 une requête récursive ou une procédure (plus facilement réalisable)
    fournira le dataset nécessaire sans champ calculé à ajouter
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Logique parce que la colonne ne fait pas réellement partie de la table de la base de données.
    Le champ calculé est une méthode nécessitant la déclaration des colonnes et l'ajout du champ (clic droit sur TQuery, déclarer les champs, ajouter un champ de type fdCalc)
    C'est pourtant bien ce que j'ai fait
    Citation Envoyé par qi130
    J'ai tenté d'ajouter un champ "manuel" dans le FDQuery (Ok)
    et ce champ est bien en calculate...

    Par contre, qu'entends-tu par
    méthode nécessitant la déclaration des colonnes
    Est-ce autre chose que mentionner les colonnes de la table des mesures? (elles sont toutes là quand je regarde les Fields dans l'explorateur d'objet; le nom du champ ajouté étant préfixé du "name" de la query)

    Ceci étant, je ne comprends pas pourquoi la FDQuery ne veut pas passer en mode dsEdit
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Pourquoi ne pas la produire directement en SQL avec un Sequence Number, la syntaxe dépend du SGBD, tu n'auras plus besoin de modifier le DataSet


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ROW_NUMBER() * 5 AS secondes, T.* FROM
    (
      SELECT ... FROM ... ORDER BY ... 
    ) AS T

    Selon les SGDB ce genre de colonne ROW_NUMBER est perturbé par le Order appliqué après le WHERE mais avant le Tri
    FireDAC oui mais sur FireBird, SQL Server, Oracle ?


    Surtout que modifier un DataSet ce n'est pas anodin, faudrait pas générer des SQL par erreur, veillez à ce que cela reste bien en cache local
    Quelle est la valeur de CanModify ?
    CachedUpdates est bien à True ?




    Citation Envoyé par Paul TOTH Voir le message
    euh...la colonne n'est pas absente puisque tu dis que c'est l'ID qui sert à compter le temps...

    un champ "manuel" ? tu veux dire un champ calculé ? dans ce cas il faut définir l'évènement OnCalcFields
    Avec un champ fkCalculated, un RecNo * 5 semble une tricherie possible dans OnCalcFields

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.DataSetCalcFields(DataSet: TDataSet);
    begin
      DataSet.FieldByName('Secondes').AsInteger := DataSet.RecNo * 5; // Si RecNo est valide
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    C'est pourtant bien ce que j'ai fait
    je ne pense pas


    Alors voilà au moins un SQL qui te permettra d'avoir les X sans avoir besoin de se casser la tête si ce n'est que cela dépend du dialect de la Bdd
    cf FAQ Firebird

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT 
    rdb$get_context('USER_TRANSACTION', 'row#') as X, 
    rdb$set_context('USER_TRANSACTION', 'row#', 
    COALESCE(rdb$get_context('USER_TRANSACTION','row#'),0) + 5),  -- COALESCE(cast(rdb$get_context('USER_TRANSACTION', 'row#') as integer), 0) + 1), si dialect 3 
    A.*
    FROM latable A 
    WHERE SERIE=:S
    ORDER BY a.colonneincrémentée
    malheureusement, il y a la petite pollution de la colonne RDB$set_context obligatoire

    la solution CTE RECURSIVE doit être a peu près comme ça
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    WITH RECURSIVE P(X,VALEUR) AS 
      (select 0 AS X,VALEUR FROM TABLESERIE WHERE SERIE=:S
        union all 
       select SKIP (P.X+1) P.X+1,T.VALEUR FROM TABLESERIE T JOIN P on 1=1  WHERE SERIE=:S 
    )
    SELECT X*5 X,VALEUR FROM P
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    j'ai mal compris ou "l'ordre des mesures est assuré pas 1 colonne auto-incrément" indique qu'il existe déjà une colonne ?

    ah par contre, l'ID n'est pas forcément séquentiel s'il y a plusieurs sources par exemple

    ID, Source, Valeur
    1, 1, 1
    2, 2, 1
    3, 1, 12
    4, 1, 25
    5, 2, 10
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut Spec simplifiée
    J'ai:

    1 table Série de Mesures et 1 table Mesures (les PK sont en auto-incrément

    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
     
    Idsérie(PK)    N°Série       typeMano                Idmesure(PK)     N°Série     ValeurMesurée 
    
          1                1                 x                          1                   1                v1
          2                2                 y                          2                   1                v2
          ..               ..                 ..                          3                   1                v3 
                                                                          ..                  ..                ..
                                                                          kk                  2
                                                                          .. 
     
         nn              147                y                         zz                147                v1
                                                                         zz+1             147                v2
                                                                         zz+2             147                v3
                                                                         zz+3             147                v4
                                                                         zz+4             147                v5
                                                                         ..                 147                v..
                                                                         zz+n             147                vn
                                                                         zz+n+1          148                v1
                                                                         ..
    Dans la query "slave" je lis la table Mesures en paramétrant le n° de série pour récupérer les valeurs mesurées pour cette série (ici 147).
    Le dataset résultant contient les lignes correspondantes (clés de zz à zz+n), et si j'y associe 1 dbgrid c'est ok.

    Maintenant, il me faut l'axe du temps.
    Dans la query "slave", j'ajoute un champ calculé que je nomme "temps". Dans l'explorateur d'objet, un TIntegerField s'est ajouté à la suite des champs correspondant aux colonnes de Mesures, son libellé résulte d'un concat du nom de la query et de "temps" (par ex: FDquery1temps) et il figure dans le dbgrid de debug.

    Je cherche ensuite à y mettre les valeurs déjà évoquées via 1 boucle. Mais le query ne passe pas en mode "edit". Par ailleurs, bien que le dbgrid ait son ReadOnly à False, je ne peux y modifier aucune valeur.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  9. #9
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    pourquoi veux-tu passer le DataSet en mode edit ? un champ calculé se calcule dans OnCalcFields sans rapport avec le mode d'édition du DataSet
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par qi130 Voir le message
    Dans la query "slave", j'ajoute un champ calculé que je nomme "temps".
    l'erreur est là
    Tu dois exprimer la requête sans champ supplémentaire (un champ qui serait de toute façon readonly par défaut)
    Tu dois utiliser le menu contextuel de la fdQuery pour déclarer les champs (note bien que j'indique champ et non colonne pour différencier de la structure de la table)
    Tu utilises alors l'éditeur de champs pour ajouter la variable X de type entier calculé.
    Une fois les champs déclarés, tu reviens sur les propriétés (ou plutôt les évènements) de la FDQuery et tu codes le onCalcfield comme indiqué par ShaileTroll

    Cependant, je reste persuadé que l'approche directe via le SGBD, telle que je l'ai proposée, est mieux.

    Selon tes propos, ta requête est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT VALEURMESUREE FROM MESURES WHERE NUMSERIE=:N ORDER BY IDMESURE
    à laquelle tu aurais ajouté une colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Temps,VALEURMESUREE FROM MESURES WHERE NUMSERIE=:N ORDER BY IDMESURE
    optionnel, car c'est l'ordre naturel

    À mon avis, ton jeu d'essai est fortement théorique, car je ne crois pas que les enregistrements de mesures se suivent lors de l'enregistrement on aurait plutôt quelque chose du genre
    en imaginant qu'il s'agisse de capteurs
    * Valeurs à T0
    Idmesure(PK) N°Série
    1 1
    2 2
    3 3
    ...
    147 147
    148 148
    * Valeurs à T+5
    149 1
    150 2
    ....
    Une condition sine qua non : qu'il n'y ait aucun trou (i.e panne d'un capteur impliquant la non-création de l'enregistrement valeur)

    La CTE Recursive proposée (modifiée en fonction de ta structure) devrait parfaitement répondre à ta demande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    WITH RECURSIVE P(Temps,VALEUR) AS 
      (select 0 AS Temps,VALEUR FROM MESURES WHERE SERIE=:S
        union all 
       select SKIP (P.Temps+1) P.Temps+1,T.VALEUR FROM MESURES T JOIN P on 1=1  WHERE SERIE=:SERIE 
    )
    SELECT temps*5 temps,VALEUR FROM P
    Pour peu que ta FDQuery contenant ce SQL soit lié (via les propriétés MasterSource et MasterField) tu n'auras pas besoin de passer de paramètres pour l'obtention des données

    Cela étant, et bien que je sois frileux concernant le QuerySlave.RecNo, l'utilisation de cette valeur est la solution pour le oncalcfield, toujours si la condition sine que non est respectée
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Bien le bonjour,

    @Sergio: je t'assure que j'ai procédé comme tu le conseilles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dans la query "slave", j'ajoute un champ calculé
    je parle du composant (pas de la requête), et de l'ajout d'un champ (pas d'une colonne) selon la méthode que tu as décrite. De fait, le SQL (select from mesures) ne fait pas référence au champ ajouté.

    Concernant la théorie: oui je le confesse, mais le fonctionnement théorique est conforme à la réalité...
    Les tables utilisées consolident les mesures de plusieurs ordinateurs de plongées, mais pas en temps réel, et pas systématiquement. Quand on branche l'ordi, on récupère un ensemble de données relatif à 1 ou plusieurs immersions. 1 seul ordi peut être branché à la fois.
    La table Série référence les immersions des ordis (avec les paramètres propres à chaque immersion: mélange respiré, PPO2, etc.), la table Mesures contient ... les mesures effectuées toutes les 5 secondes (profondeur, T°, et en cas de sonde wifi sur la bouteille la pression résiduelle).

    Bon, je m'en vais investiguer le onCalcField...

    Bonne journée.

    PS: tout ceci n'a pas d'enjeu particulier sauf à conserver un cerveau en état de marche (retraite en approche)
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  12. #12
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Pour OnCalcFields, regarde le message #5, faut pas chercher compliquer
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  13. #13
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par qi130 Voir le message
    Les tables utilisées consolident les mesures de plusieurs ordinateurs de plongées,
    Mon premier boulot : Plongeur-Scaphandrier

    Citation Envoyé par qi130 Voir le message
    retraite en approche
    mes premiers pas dans les arcanes des dépôts de dossier sont déjà faits
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #14
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut TADA
    Merci à tous pour vos interventions pertinentes.

    J'ai mis en œuvre l'dée de Shail

    and voilà:
    Nom : Capture.JPG
Affichages : 88
Taille : 35,4 Ko

    encore qq réglages (axe X, légende) dans ce compo très complexe...
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  15. #15
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Dommage, on ne voit pas les temps de plongées, par tranche de 5 min, ce serait pas mal (petites que -30)
    De l'eau à 20° à -15 m mince la baignoire ! encore un coup du dérèglement climatique à moins qu'il ne s'agisse d'un lac ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  16. #16
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Dommage, on ne voit pas les temps de plongées, par tranche de 5 min, ce serait pas mal (petites que -30)
    De l'eau à 20° à -15 m mince la baignoire ! encore un coup du dérèglement climatique à moins qu'il ne s'agisse d'un lac ?
    Le temps est prévu sur l'axe des X et fait partie du reste à faire...

    Pour les courbes, possiblement ma dernière fin mai à Ajaccio (donc oui, un lac )
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  17. #17
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut in progress
    Après qq réglages :
    Nom : Capture.JPG
Affichages : 70
Taille : 36,0 Ko
    (11/11/2017 - le Donator)

    Mais j'ai pas encore trouvé comment incorporer la couleur des courbes dans la légende, et je cherche pour le "pas" du temps que je préfèrerais à 05:00
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  18. #18
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Belle descente et palier un peu long (d'après mes souvenirs de table pro des années 70)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  19. #19
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Les tables MN90 ont bénéficié des retours d'expérience et sont plus "sécures", idem pour les algos de décompression.

    Voilà après plusieurs dizaines d'essais de paramétrage: légende, hint interactif temps/profondeur, grid vertical du temps (avec libellé centré)
    Nom : Capture.JPG
Affichages : 54
Taille : 40,7 Ko
    Le Roraïma (St-Pierre -Martinique)
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

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

Discussions similaires

  1. [AC-2000] Ajouter une colonne de données à une table via vrai faux
    Par AmaAna dans le forum Modélisation
    Réponses: 1
    Dernier message: 17/05/2011, 16h46
  2. Ajout de colonnes en début de table ?
    Par joseph_p dans le forum Oracle
    Réponses: 14
    Dernier message: 16/08/2006, 15h56
  3. Réponses: 5
    Dernier message: 16/06/2006, 22h39
  4. Réponses: 4
    Dernier message: 17/05/2006, 09h21
  5. prob ajout de colonne ds une table en tant NOT NULL
    Par elhosni dans le forum Access
    Réponses: 3
    Dernier message: 19/11/2005, 22h18

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