#1 Tue 04 August 2015 10:23
- Just-Soft
- Participant actif
- Lieu: Chlef, Algérie
- Date d'inscription: 10 Jun 2009
- Messages: 76
Delphi, comment avoir le résultat d'un champs boolean ?
Bonjour
Je veux avoir le contenu d'un champ nommé Prise_en_charge qui est de type boolean. J'ai tenté avec ce code mais il me retourne "" (vide) qui est li'équivalent de False en Delphi alors que j'ai des données avec la valeur "T" ce qui doit correspondre à True. Voici le bout de code
Code:
procedure TfmMain.SynchroniserDataetCarmeMapInfo1Click(Sender: TObject); var nom_commune : string; msg_mi: string; Prise_en_charge: string[1]; begin // briser la relation maitre détail if DM.IBCTable_COMMUNE.MasterSource <> nil then DM.IBCTable_COMMUNE.MasterSource := nil; // Pointer au début de la table DM.IBCTable_COMMUNE.First; while not(DM.IBCTable_COMMUNE.Eof) do begin // Renseigner le nom de la commune nom_commune := DM.IBCTable_COMMUNENOM_COMMUNE.AsString ; // Selectionner la commune sur la carte msg_mi := 'Select * from com_zones where commune = ' + '"' + nom_commune + '"'; fmMain.OleMapInfo.do(msg_mi); // Excécution msg_mi := 'RUN MENU COMMAND ' + IntToStr(M_QUERY_FIND_SELECTION); // Afficher la commune avec un zoom adéquat msg_mi := 'Find Using com_zones(COMMUNE) Find ' + '"' + nom_commune + '"' + ' Interactive '; // Excécution fmMain.OleMapInfo.do(msg_mi); msg_mi := 'Select Prise_en_charge from com_zones where commune = ' + '"' + nom_commune + '"'; // Retout d'info et Excécution Prise_en_charge := fmMain.OleMapInfo.Eval(msg_mi); // Affichage ShowMessage(Prise_en_charge); msg_mi := 'Commit Table com_zones'; // Excécution fmMain.OleMapInfo.do(msg_mi); msg_mi := 'Close Table Selection'; // Excécution fmMain.OleMapInfo.do(msg_mi); // Passer à l'autre enregistrement DM.IBCTable_COMMUNE.Next; end; // Rétablir la relation maitre détail if DM.IBCTable_COMMUNE.MasterSource <> nil then begin DM.IBCTable_COMMUNE.MasterSource := DM.ds_COM; DM.IBCTable_COMMUNE.MasterFields := 'CODE_COMMUNE'; end; end;
J'arrive pas à avoir la valeur du champs Prise_en_charge, si vous avez d'autres propositions n'hésitez pas.
Merci par avance.
Bon courage ou Bonne Chance (selon le contexte)
Hors ligne
#2 Tue 04 August 2015 17:02
- Just-Soft
- Participant actif
- Lieu: Chlef, Algérie
- Date d'inscription: 10 Jun 2009
- Messages: 76
Re: Delphi, comment avoir le résultat d'un champs boolean ?
Bingo ... résolu
pour toute fin utile voici le code :
Code:
procedure TfmMain.Synchro_DATA_MAPClick(Sender: TObject); var nom_commune : string; msg_mi: string; Prise_en_charge: string; i: Byte; begin i := 0; // briser la relation maitre détail if DM.IBCTable_COMMUNE.MasterSource <> nil then DM.IBCTable_COMMUNE.MasterSource := nil; // Pointer au début de la table DM.IBCTable_COMMUNE.First; fmMain.OleMapInfo.do ('Dim value as String '); while not(DM.IBCTable_COMMUNE.Eof) do begin // Renseigner le nom de la commune nom_commune := DM.IBCTable_COMMUNENOM_COMMUNE.AsString ; // Selectionner la commune sur la carte msg_mi := 'Select * from com_zones where commune = ' + '"' + nom_commune + '"' + 'into mySelect'; fmMain.OleMapInfo.do(msg_mi); // Retour d'info et Excécution fmMain.OleMapInfo.do (' Fetch First From mySelect' + #10#13 + ' value = mySelect.Prise_En_Charge'); // Affichage Prise_en_charge := fmMain.OleMapInfo.Eval('value'); fmMain.OleMapInfo.do(msg_mi); // Excécution msg_mi := 'RUN MENU COMMAND ' + IntToStr(M_QUERY_FIND_SELECTION); // Afficher la commune avec un zoom adéquat msg_mi := 'Find Using com_zones(COMMUNE) Find ' + '"' + nom_commune + '"' + ' Interactive '; // Excécution fmMain.OleMapInfo.do(msg_mi); if Prise_en_charge = 'F' then begin Inc(i); msg_mi := 'Select * From com_zones Where commune = ' + '"' + nom_commune + '"' + 'into TB_MAJ'; msg_mi := msg_mi + ' Update TB_MAJ Set Prise_en_charge =' + '"' + 'T' + '"' ; fmMain.OleMapInfo.do(msg_mi); msg_mi := 'Commit Table com_zones'; // Excécution fmMain.OleMapInfo.do(msg_mi); msg_mi := 'Close Table TB_MAJ'; // Excécution fmMain.OleMapInfo.do(msg_mi); end; msg_mi := 'Close Table MySelect'; // Excécution fmMain.OleMapInfo.do(msg_mi); // Passer à l'autre enregistrement DM.IBCTable_COMMUNE.Next; end; ShowMessage(Format('Synchronisation de %d commune(s)', [i])); // rétablir la relation maitre détail if DM.IBCTable_COMMUNE.MasterSource <> nil then begin DM.IBCTable_COMMUNE.MasterSource := DM.ds_COM; DM.IBCTable_COMMUNE.MasterFields := 'CODE_COMMUNE'; end; end;
Dernière modification par Just-Soft (Tue 04 August 2015 17:04)
Bon courage ou Bonne Chance (selon le contexte)
Hors ligne
#3 Mon 10 August 2015 11:15
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: Delphi, comment avoir le résultat d'un champs boolean ?
Bonjour,
Merci pour le suivi.
Nicolas.
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#4 Tue 11 August 2015 14:08
- Just-Soft
- Participant actif
- Lieu: Chlef, Algérie
- Date d'inscription: 10 Jun 2009
- Messages: 76
Re: Delphi, comment avoir le résultat d'un champs boolean ?
Tout marche assez bien, seul bémol, je n'ai pas trouvé le moyen de récupérer la chaîne proposé dans la boite de dialogue du find. Au fait, je voudrais corriger le nom de la commune de la base de données par celui de la table MapInfo.
Donc au début, je commence par faire une recherche par le biais du code_commune, puis un find sur le nom_commune, si celui-là n'est pas le même avec celui de la base de données j'affiche le nom sélectionné. Je m'explique, le "find using" avec la syntaxe "alternative, propose une liste des chaines qui ont une ressemblance avec la chaîne recherchée, si je choisis une chaîne "X" et que je valide, je voudrais faire une mise à jour avec cette chaîne (pour le moment l'affichage du choix devrait suffire)
j'ai pensé à faire ça :
Code:
msg_mi := 'Find Using com_zones(COMMUNE) Find ' + '"' + nom_commune + '"' + ' Interactive'; // Excécution fmMain.OleMapInfo.do(msg_mi); res_search := fmMain.OleMapInfo.Eval('CommandInfo(3)'); // si le nom n'est pas le même MAJ if (res_search <> 11) then begin // Afficher le nom choisie end;
Dernière modification par Just-Soft (Tue 11 August 2015 14:16)
Bon courage ou Bonne Chance (selon le contexte)
Hors ligne