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 :

Message d'erreur sur base de données


Sujet :

Bases de données Delphi

  1. #21
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 176
    Points : 79
    Points
    79
    Par défaut
    C'est exactement ça avec en plus le traitement du décompte des cases "confirmée" qui doit me donner le nombre de contrées contactées ET confirmées, actuellement 211 dans la BDD complète. Pour ma part j'obtiens ce décompte par un SELECT DISTINCT sur le champ Zone_CQ.
    Vous avez compris que la case INFO ne doit contenir "confirmée" que si la case s/QSL (la confirmation envoyée par le correspondant) est cochée. Par contre je vois une case "erreur" pour la contrée 9M2 alors qu'il devrait y avoir "confirmée". Le préfixe est correct, il y a aussi 9M8, 3B8, 3B9. Il y a comme ça quelques contrées ayant des préfixes à 3 caractères, et même à 4 caractères, FT5W, FT5X, FT5Y, FT5Z ou VP2E.
    Les autres champs ne sont que des renseignements techniques :
    Date, heure de début du contact, heure de fin
    s/RST : la force du signal avec lequel je reçois mon correspondant
    m/RST : la force de mon signal chez lui
    Bande : la fréquence sur laquelle le contact a été réalisé
    Mode : le mode de transmission, SSB pour la phonie, CW pour la télégraphie (morse).
    Quant au passage à SQLite et Firedac, ce n'est pas gagné car vous devrez auparavant me décrasser le cerveau. C'est un peu (beaucoup !) du chinois pour moi.
    Bonne continuation. A bientôt et merci pour votre assistance.

  2. #22
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    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 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par f5jcg_Lulu Voir le message
    Quant au passage à SQLite et Firedac, ce n'est pas gagné car vous devrez auparavant me décrasser le cerveau. C'est un peu (beaucoup !) du chinois pour moi.
    en fait j'ai fait quelque chose d'hyper simple (pour moi)
    * ces manipulations ont été faites avec une version 10.2 Entreprise me confirmer que votre version :
    1 - propose les composants Firedac
    2- a les drivers nécessaires (msAcc, SQlite)

    Dans un nouveau programme VCL (j'aurais tout aussi bien fait un programme FMX mais les liaisons Livebindings cela aurait peut-être été un peu trop d'un coup)

    Tout d'abord Firedac, comme je n'aime pas ADO et que Firedac permet quand même plus de choses (dont le batchmove qui permet de transférer des données d'une table à une autre) j'ai commencé par une tentative de connexion à votre base Access (id pilote MSAcc) j'ai ensuite posé un FDTable (lié à cette première connexion) un TDatasource (lié au FDTable) et un TDBgrid
    Ouverture de la table .... Ok la grille est remplie

    Je pose ensuite un nouveau FDConnection (id pilote SQLite) que je connecte à une base qui bien sûr n'existe pas encore, pas de soucis ouvrir la connexion suffira à créer la base de données
    même principe je pose ensuite un FDTable connecté à cette connexion, bien évidemment la base de données étant vide, j'indique le nom de la future table tblcontacts (mais cela aurait pu être un autre nom )

    Passons au transfert
    je pose 3 composants FDBatchMove, FDBatchDatasetReader qui sera le lien entre la table access et le FDBatchmove, FDBatchDatasetWriter qui sera le lien entre fdBatchmove et la future table SQLite.

    Nom : Capture.PNG
Affichages : 228
Taille : 7,0 Ko

    Le "programme" de transfert est quasiment terminé, un clic droit sur le FDbatchmove pour obtenir le menu contextuel me montre la première option 'Exécuter' (attention à ne le faire qu'une fois) et voilà le transfert est fait !

    Étrangement (bug ?) il y a un problème le premier enregistrement de la table n'est pas le bon mais , à part ça le reste est passé correctement
    [Edit] c'est bien un bug de la version Tokyo que j'ai (avec Rio pas de souci) , c'est contournable en utilisant un TFDQuery au lieu d'un TFDTable pour la partie Access.

    Voilà la première étape, même chose pour votre autre table et j'obtiens une base SQLite de même structure que votre base Access

    Place ensuite aux tests SQL (avec SQLiteStudio)

    Là, rien à voir avec Delphi, c'est du pur langage de requête SQL (et encore n'est-ce pas du propre, juste une idée en l'air ! Les fonctions de fenêtrages apporterait peut-être une meilleure solution mais je ne maitrise pas le sujet)

    Pour tout dire, j'ai tenté d'écrire ce même SQL avec Access en obtenant toujours des erreurs de syntaxe et avec Firebird SQL j'aurais tenté encore une autre approche car je n'aime pas trop les SELECTs imbriqués dans d'autres SELECTs

    Pour ce qui est de la mention info 'Erreur', à moins que je me sois trompé ou que le transfert de la table ai eu elle aussi un bug possible, je n'ai pas contrôlé
    je ne trouve pas, dans la table concernée, la ZONE CQ 9M2 pour in INDICATIF commençant par 9M2 , uniquement ceux-ci

    NUMERO PREFIXE CONTREE ZONE_ITU ZONE_CQ
    262 9M8 West Malaysia 28 9M2
    274 9W West Malaysia 28 9M2

    Donc soit c'est une erreur de transfert (qui tombe bien car fourni un cas non prévu) soit il y a un problème dans vos données

    [NB] en balayant la table j'ai remarqué que certains préfixes dépassaient 5 caractères, ceux-ci ne sont pas couverts par le SQL que j'avais concocté, de plus comme j'y vois des / je me pose la question de savoir si le / n'indique pas une alternative, à moins qu'il n'y ait encore d'autres subtilités dans la recherche de la ZONE_CQ

    C'est exactement ça avec en plus le traitement du décompte des cases "confirmée" qui doit me donner le nombre de contrées contactées ET confirmées, actuellement 211 dans la BDD complète. Pour ma part j'obtiens ce décompte par un SELECT DISTINCT sur le champ Zone_CQ.
    ça, cela ne changera pas


    Sur ce, je me mets au travail (tout le monde n'a pas la chance d'être à la retraite, en tout cas dans mon cas je pourrais si sainte CARSAT n'était pas si dure avec les trimestres manquants de mes longs séjours à l'étranger)

    Bonne Journé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

  3. #23
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 176
    Points : 79
    Points
    79
    Par défaut
    Bonjour,
    Oulala, j'ai un mal de crâne à lire votre réponse ! Non, je plaisante c'est du sérieux et on voit que vous avez pioché la question pour me proposer une alternative.
    Donc, la version de mon Delphi est la 10.2 avec tous les composants Firedac y compris ce qui concerne SQLite. Par contre dans la liste des drivers je vois bien msAccess et d'autres mais pas SQLite. Grave, docteur ?
    Pour l'erreur, effectivement 9M2 correspond à 9M2 ou 9M6, etc... mais peu importe puisque le test se fait sur les 3 premiers caractères et que tout ramène à une seule possibilité dans tblDxcc. Cette partie fonctionne bien actuellement dans mon appli. Les / veulent dire que c'est un étranger qui émet depuis le pays en question, ex : si j'allais en vacances au Japon et que j'ai l'autorisation d'émettre je serais alors JA/F5JCG.
    Bon boulot pro, quant à la retraite, et bien ça viendra un jour mais ne la souhaitez pas trop vite...
    Merci et à bientôt

  4. #24
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    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 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut Doliprane
    Re,
    Citation Envoyé par f5jcg_Lulu Voir le message
    Donc, la version de mon Delphi est la 10.2 avec tous les composants Firedac y compris ce qui concerne SQLite. Par contre dans la liste des drivers je vois bien msAccess et d'autres mais pas SQLite. Grave, docteur ?
    Non, vous avez dû le passer car Firedac utilise le moteur SQLite à fond donc, CQFD le "driver" existe
    Donc, vous avez déjà ce qu'il faut pour transférer de Access à SQLite (ou autre)
    Pour l'erreur, effectivement 9M2 correspond à 9M2 ou 9M6, etc... mais peu importe puisque le test se fait sur les 3 premiers caractères et que tout ramène à une seule possibilité dans tblDxcc.
    comme indiqué, mon SQL est perfectible c'était un essai
    Bon boulot pro, quant à la retraite, et bien ça viendra un jour mais ne la souhaitez pas trop vite...
    Maintenant que les fondations sont faites du moins dans les grandes lignes, j'aimerais continuer en vous proposant une version 'programme utilisateur' telle que moi je la concevrai pour la saisie de la table des contacts. J'hésite juste sur le choix du framework VCL ou FMX peut-être même ferai-je les deux, histoire de démontrer ce que peut apporter ou impliquer le second framework
    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

  5. #25
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 176
    Points : 79
    Points
    79
    Par défaut
    Merci pour le doliprane !
    Effectivement j'avais passé le driver SQLite. J'ai trouvé un tuto multi-plateformes chez Embarcadero pour réaliser une connection à une BDD SQLite et ça marche. Je commence à saisir le truc.
    Pour la suite, je vous laisse faire mais je suis vraiment touché par l'intérêt que vous portez à mon projet. J'essaie de suivre mais pas d'inquiétude, je pédale ferme.
    A bientôt.

  6. #26
    Rédacteur/Modérateur

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

    Voilà une première ébauche du programme VCL.
    vous devrez certainement changer le chemin de connexion à la base de données dans le DataModule
    Vous serez certainement surpris par le peu de code

    Tout n'est pas parfait mais je me réserve pour FMX
    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

  7. #27
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 176
    Points : 79
    Points
    79
    Par défaut
    Bien reçu le fichier. Au lancement il n'y a aucun message d'erreur mais rien ne se passe. Je ne sais pas dans quel composant je dois indiquer le chemin et le nom de la BDD contacts.sdb. Tout est si nouveau pour moi, je suis un peu perdu.
    Mais vous m'ouvrez de nouveaux horizons lumineux. Vous avez raison, il y a très peu de code par rapport à mon usine à gaz !
    Merci. A vous lire.

  8. #28
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 176
    Points : 79
    Points
    79
    Par défaut
    J'avance. L'interface se lance mais avec un vilain message "violation d'accès à l'adresse 00A7B27C dans le module 'contacts.exe'. Lecture de l'adresse 00000074." ; et le DBGrid reste vide. J'ai peut-être saisi le chemin et nom de la BDD où il ne faut pas !
    + un autre message, et là rien ne se lance.
    Je vais prendre le temps de la réflexion !!!
    Images attachées Images attachées  

  9. #29
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    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 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    AH, désolé, c'est que j'ai laissé trainé la forme Batchmovetest et une des connexions doit être encore ouverte !

    Double-cliquez sur le composant Connexion dans le datamodule c'est la propriété database qu'il faut changer en fonction de où vous avez dézipper l'archive
    Vous pouvez également retirer la forme Batchmovetest du projet
    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

  10. #30
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 176
    Points : 79
    Points
    79
    Par défaut
    J'ai réalisé ce que vous me demandiez de faire dans le précédent post. L'interface se lance mais toujours avec le message "violation d'accès à l'adresse 00A7B27C dans le module 'contacts.exe'. Lecture de l'adresse 00000074." DBGrid vide.
    Je suis reparti du zip d'origine. Même effet.
    Mais je persisterai jusqu'à que ça tourne avec votre aide. Ensuite je n'aurai plus qu'à mettre tout ça à ma sauce et vous laisser vous éclater avec le FMX.
    Laissons la soirée passer, demain il fera jour.
    Bonne soirée. A bientôt.

  11. #31
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    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 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    étrange, ce pourrait être dû à la version de SQLite que j'utilise ? Quoique, logiquement, le "moteur" SQLite est intégré dans Firedac.

    J'ai donc préparé un paquet avec l'exe et la base et voir ce qu'il en est

    Opérations faites :
    - un essai du paquet sur un poste Vista (oui j'en ai encore un ) est totalement positif
    - j'ai mis ce premier "brouillon" sur Github dans le fichier release.zip se trouve l'exe et la base de données
    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
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    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 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut Non, je n'ai pas oublié
    Bonjour,
    Je reprends le flambeau après quelques temps passés sur d'autres choses (et histoire de me la péter un peu )
    J'ai donc repris où j'en étais avec la partie VCL, je me suis d'ailleurs rendu compte que j'étais déjà parti avec les LiveBindings c'était si facile de s'affranchir des composants liés à la base de données et comme il n'existait pas de TDBDateEdit et TDBTimeEdit je me suis laissé emporté (une solution aurait été d'utiliser la bibliothèque JVCL).
    Voilà quelques images en version FMX "stylé" Calypso
    Nom : Capture0.PNG
Affichages : 191
Taille : 47,6 Ko
    pour les images c'est dans un futur tutoriel (en relecture) que les explications se trouvent
    après sélection d'un contact on arrive à cet écran
    Nom : Capture.PNG
Affichages : 196
Taille : 46,6 Ko
    c'est ici que je m'arrête pour aujourd'hui. J'ai longtemps hésité sur la marche à suivre pour la recherche de la ZONE_CQ en fonction des préfixes.
    J'aurais pu utiliser mon tutoriel et utiliser une boite de choix mais je me suis plutôt arrêté sur une TListView et quelques petites astuces que j'ai découvertes en réalisant ça.
    - L'une de ces astuces (ne selectionner qu'un seul élément de liste) paraîtra bientôt dans la FAQ FireMonkey FMX
    - Une autre, c'est encore dans l'utilisation de TSearch que cela se passe, j'ai découvert que l'on pouvait très bien écrire un texte dans cette boite de recherche d'une TListView. Quand un élément de la liste contact est sélectionné et avant de passer à la fiche contact je fourni une valeur de recherche
    procedure TMainUnit.ListeContactDblClick(Sender: TObject);
    var p : String;
    begin
    if datas.QContactsZONE_CQ.asString.isEmpty
    then p:=Copy(datas.QContactsINDICATIF.asString,1,2) // deux premiers caractères de l'indicatif
    else p:=datas.QContactsZONE_CQ.asString; // la zone CQ validée
    // un nouveau truc
    if ListeZCQ.controls[1].ClassType = TSearchBox then
    begin
    TSearchBox(ListeZCQ.controls[1]).text:=P;
    end;
    TabControl1.Next();
    end;
    Je pense que c'est le comportement recherché (à me confirmer).

    - Enfin, dernier truc concernant la recherche. J'avais déjà pioché dessus lors d'une discussion que j'avais ouverte pour une problématique à peu près similaire. La recherche par défaut de la TListView se fait par défaut sur tout le texte contenu dans un élément (item) de la liste et de plus c'est une recherche dans le contenu (Contains sans casse) et non sur le début d'un élément (StartsWith)
    Or je voulais à la fois afficher les préfixes et noms de zone problème lorsque je demandais AM je me retrouvais avec les préfixes commençant par AM mais aussi des zones comme Panama etc..
    En reprenant la discussion, un simple code sur l'évènement OnFilter de liste m'a permis de faire cette recherche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TMainUnit.ListeZCQFilter(Sender: TObject; const AFilter,
      AValue: string; var Accept: Boolean);
    begin
    Accept:=AFilter.isEmpty OR AValue.Trim.StartsWith(AFilter);
    end;
    Maintenant que cette partie est éclaircie (et j'espère que c'est le comportement souhaité) je vais pouvoir avancer sur des choses plus basique (affichage des conversations, ajout de conversations, gestion des zones)
    en ébauche ici
    Nom : Capture.PNG
Affichages : 194
Taille : 58,5 Ko
    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

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/10/2012, 13h21
  2. Message d'erreur sur ma base de données
    Par Zizou7 dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/06/2010, 15h42
  3. Message flash variable sur base de donnée SQL
    Par Gwegz dans le forum Dynamique
    Réponses: 4
    Dernier message: 12/07/2007, 10h28
  4. Manipulation de XML sur base de données
    Par psyche dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 02/11/2004, 14h07
  5. Réponses: 2
    Dernier message: 19/06/2003, 21h58

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