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

Delphi Discussion :

Base de données Keno


Sujet :

Delphi

  1. #21
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    La problématique n'était pas tant de stocker l'information que d'obtenir les diverses combinaisons.
    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

  2. #22
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    j'ai une erreur utilisation incorrect mot clé '_'

    surement a cette ligne r:=r+Quotedstr('_')+') FROM 1 FOR 2)';

    comme j'ai des doute avec les mot cle jour remplacer pa JR heure par HR

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    r:='INSERT INTO COMBINAISONS(JR,HR,B1,B2,B3,B4) SELECT JR,NUMERO,';

    j'ai crée une base donnée avec JR,HR,B1,B2,B3,B4

    numero sa correspond a quoi ?
    merci

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    re
    je vois que tu as fait un exemple peut tu si tu veux m'envoyer le source
    merci d'avance

  5. #25
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par tintin62 Voir le message
    bonjour
    j'ai une erreur utilisation incorrect mot clé '_'
    surement a cette ligne r:=r+Quotedstr('_')+') FROM 1 FOR 2)';
    Oui, c'est du rajout non testé et il manquait une parenthèse !

    si tu veux m'envoyer le source
    Attention c'est fait avec Rio
    Fichiers attachés Fichiers attachés
    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

  6. #26
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    RIO connait pas mais sa marche avec delphi

    par contre le programme sert a générer un SQL ???

  7. #27
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    une fois la chaîne créé il est assez simple d’extraire les élément voulue
    tu recupere la valeurpar un simple substring


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select MADATE, SUBSTRING(chaine, debut,1),SUBSTRING(chaine, debut+1,1),SUBSTRING(chaine, debut+2,1) 
    from MATABE 
    where SUBSTRING(chaine, debut,1)  = 1 
    and SUBSTRING(chaine, debut+1,1)  = 1 
    and SUBSTRING(chaine, debut+2,1)  = 1
    l'extraction de donnée se fait simplement
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  8. #28
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par tintin62 Voir le message
    RIO connait pas mais sa marche avec delphi
    RIO c'est Delphi 10.3.2 (la dernière version)

    le programme sert a générer un SQL ???
    Oui, c'est ainsi que j'ai pu voir quelle taille cela pourrait faire, c'est à partir de là que j'ai indiqué qu'il fallait les passer une par une afin de peupler la table COMBINAISONS
    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

  9. #29
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour

    je récapitule
    donc j'ai le gros fichier qui a créer le fichier exemple: combinaison.sql

    il faut ensuite lancer ce fichier.sql comment ?

    ensuite
    je lance comment ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select MADATE, SUBSTRING(chaine, debut,1),SUBSTRING(chaine, debut+1,1),SUBSTRING(chaine, debut+2,1) 
    from MATABE 
    where SUBSTRING(chaine, debut,1)  = 1 
    and SUBSTRING(chaine, debut+1,1)  = 1 
    and SUBSTRING(chaine, debut+2,1)  = 1
    désole encore de vous embêter je me débrouille mieux
    en mathématique que base donnée

  10. #30
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    Rio donc version delphi 10
    quelle nouveauté par rapport xe6 ?
    merci

  11. #31
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    rien à voir entre la solution d'Anapurna et celle que j'ai proposée.
    Une fois le fichier des combinaisons rempli un simple SQL suffira à vous retrouvez les combinaisons les plus sorties (notez que ce sera encore plus simple si au lieu d'utiliser un fichier contenant 4 colonnes pour les 4 boules de la combinaison vous utilisez simplement la combinaison (une simple transformation de l'idée de base en remplaçant une virgule par un ||, ce que j'avais mis en commentaire.
    Dans ce cas sur une table ayant cette structure
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE COMBINAISONS 
    (JOUR DATE,
     HEURE ,
     COMBI VARCHAR(8)
    );
    ce code SQL à mettre dans une TQuery
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COMBI,Count(*) AS N FROM COMBINAISONS 
    GROUP BY COMBI
    ORDER BY N DESC
    vous fournira, dans l'ordre, les tirages les plus sortis

    Dans le cas où vous préférez rester sur une structure "4 boules" le SQL est un peu plus compliqué mais raisonnable
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT B1||B2||B3||B4 AS COMBI,Count(*) AS N FROM COMBINAISONS
    /* GROUP BY COMBI  ici j''ai un doute donc */ 
    GROUP BY B1||B2||B3||B4 
    ORDER BY N DESC

    Rio donc version delphi 10.3 quelle nouveauté par rapport xe6 ?
    trop pour que je puisse les citer entre les améliorations de l'IDE les avancées (pas toujours très heureuses AMHA) dans le langage, les composants, les cibles il y a trop de versions (5 ou 6) d'écart
    Mais, si vous avez XE6 avec les composants Firedac envisagez SQLite comme base de données en lieu et place de DBase
    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

  12. #32
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    j'ai encore un probleme
    donc j'ai creer le gros fichier SQL
    mais quand je le lance j'ai une erreur
    vous joint le brouillon du programme

    merci pour votre patience
    Fichiers attachés Fichiers attachés

  13. #33
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    que vous ayez une erreur est logique puisque vous n'avez pas vraiment suivi mon raisonnement.
    Ce que j'ai mis en commentaire dans le source que je vous ai fourni est important.
    Votre objectif n'est pas de récupérer un SQL qui de toute façon sera trop gros pour être exploiter par le BDE, le programme tel que je l'ai fourni ne fait que montrer ce que cela donnerait.
    Votre objectif est de remplir la table combinaisons.dbf
    pour cela il faut prendre en compte les commentaires que j'avais mis
    Voilà le code approximatif, non testé car je n'ai pas BDE (obsolète depuis plus de 15 ans) d'installé sur ce poste.

    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
     
    unit Unit1;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Bde.DBTables, Data.DB, Vcl.StdCtrls,
      Vcl.Grids, Vcl.DBGrids,math;
     
    type
      TForm1 = class(TForm)
        Table1: TTable;
        Button1: TButton;
        DataSource1: TDataSource;
        Memo1: TMemo;
        DBGrid1: TDBGrid;
        Button2: TButton;
        Aquery: TQuery;
        Table2: TTable;
        DataSource2: TDataSource;
        DBGrid2: TDBGrid;
        Button3: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    // remplissage de la table des combinaisons
      var i,j,o : Integer;
        s,r : String;
        WQuery : TQuery;
     
    function inttobin (p_nb_int: uint64; p_nb_digits: byte=64): string;
    begin
      SetLength(Result, p_nb_digits);
      while p_nb_digits > 0 do
      begin
        if odd(p_nb_int) then
          Result[p_nb_digits] := '1'
        else
          Result[p_nb_digits] := '0';
        p_nb_int := p_nb_int shr 1;
        dec(p_nb_digits);
      end;
    end;
     
    begin
     
     WQuery:=TQuery.Create(Self); // ici il s'agit d'un composant créé au runtime
     try
     WQuery.DatabaseName:=AQuery.DatabaseName; 
     WQuery.SQL.text:='Delete FROM COMBINAISONS'
     WQuery.ExecSQL;
     for I := Trunc(power(2,20)) downto 0 do
       begin
        s:=inttobin(I,20);
        if s.CountChar('1')=4 then
         begin
           o:=0;
           r:='INSERT INTO COMBINAISONS(JOUR,HEURE,B1,B2,B3,B4) SELECT JOUR,HEURE,';
    // ou  r:='INSERT INTO COMBINAISONS(JOUR,HEURE,COMBI) SELECT JOUR,HEURE,';
           for j:=1 to 4 do
            begin
              o:=Pos('1',s,o+1);
              r:=r+Format('SUBSTRING(CAST(B%d AS CHAR(2))+',[o]);
              r:=r+Quotedstr('_')+') FROM 1 FOR 2)';
              if j<4 then r:=r+','; // ou r:=r+'||'
            end;
           r:=r+' FROM KENO2019';
           Wquery.SQL.text:=R;
           WQuery.ExecSQL;
         end;
       end;
      finally
       WQuery.Free;
    end;
    end;
     
    procedure TForm1.Button3Click(Sender: TObject);
    // obtenir le résultat (remplir la grille)
    begin
    AQuery.Active:=False;
    AQuery.SQL.Clear;
    AQuery.SQL.Add('SELECT B1||B2||B3||B4 AS COMBI,Count(*) AS N FROM COMBINAISONS');
    AQuery.SQL.Add('GROUP BY B1||B2||B3||B4'); 
    AQuery.SQL.Add('ORDER BY N DESC');
    AQuery.Active:=True;
    end;
     
    end.
    au passage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    AQuery.ExecSQL;
    AQuery.Open;
    vous faites ici deux opérations alors qu'il vous en faut une seule.
    - ExecSQL exécute la requête sans renvoyer de données, on l'utilise pour des instructions telles que DELETE,INSERT,UPDATE
    - Open (ou active:=true) ouvre un ensemble de données (et donc renvoi des données) on l'utilise pour SELECT, ('SELECT * FROM TABLE' étant l'équivalent d'un TTable)
    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. #34
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    j’espère que tu te prend pas la tete avec moi car j'ai jamais travailler sur les bases donnée
    c'est mon premier essai et je crois que sa seras le dernier mais maintenant que j'ai commence cette fonction je voudrais la finir
    merci de ta patience
    je viens de lancer ton dernier edit et j'ai un problème au button1
    message erreur ci dessous
    utilisation incorrect du mot clé (

    une parentheses en trop ou en moins ,
    merci

  15. #35
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par tintin62 Voir le message
    j’espère que tu ne te prends pas la tête avec moi car je n'ai jamais travaillé sur les bases données
    si et c'est ma dernière intervention

    c'est mon premier essai et je crois que ce sera le dernier
    Quand on utilise des outils (DBASE) complètement dépassés il ne faut pas s'attendre à des miracles

    utilisation incorrecte du mot clé (
    on a déjà vu ça et effectivement il y avait encore la parenthèse à ôter problème de copier coller

    J'ai finalement installé BDE et les composants BDE sur ce poste et
    DBASE ne semble pas accepter la syntaxe INSERT INTO TABLE SELECT FROM AUTRETABLE !
    Deuxième souci j'avais indiqué de construire COMBINAISONS avec, pour les boules, des CHAR(2) quelle ne fut pas ma surprise de voir ENCORE des entiers !
    Bref une fois ces problèmes réglés autrement le programme "tourne" mais il faut une patience à toute épreuve, 1806620 enregistrements à créer ! J'ai arrêté au bout de 8648 (soit à peine 3 combinaisons) pour tester la suite.
    AMHA, il faut remplir le fichier des combinaisons au fur et à mesure du remplissage des résultats
    il faut surtout changer de SGBD et utiliser des threads mais ça, ça ne fait pas partie du contrat
    Fichiers attachés Fichiers attachés
    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. #36
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    tiens voici les requette depuis ton fichier dbase pour l'integre dans une vrai base de donnée keno.zip
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Tirage aléatoire dans une base donnée
    Par leloup84 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 30/01/2006, 16h13
  2. Création d'un alias sur base données "Microsoft Text Dr
    Par defluc dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/06/2005, 08h28
  3. Réponses: 6
    Dernier message: 04/05/2005, 09h58
  4. Delphi - Base donnée Paradox, problème de nom des champs
    Par mjp dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/01/2005, 21h10
  5. base données avec java mono et multi utilisateurs
    Par Garion dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 03/12/2004, 09h20

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