Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Base de données de type ISAM par Excel sous PANORAMIC | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Base de données de type ISAM par Excel sous PANORAMIC Mar 5 Jan 2010 - 10:18 | |
| Bonjour, Etant nouveau venu sous Panoramic, je voulais évaluer la difficulté de prise en main; pour ce faire, j'ai développé une petite base de données de type ISAM en utilisant Excel. Je l'ai nommée PISAM (Panoramic Indexed Sequential Access Method). Pour le moment, elle est limitée à 4 clés d'accès independantes, chacune avec 1 à 4 segments non contigus de clés. Clés et data sont uniquement en ASCII imprimable (pas de binaire), et la longueur d'enregistrement est variable à condition qu'elle soit suffisante pour englober tous les segments des clés. J'ai réalisé le tout sous forme de macros dans Excel. Ces macros sont pilotés par quelques cellules sur la première feuille; ce sont ces cellules que Panoramic utilise. Le reste est automatique, déclenché par un code action déposé par Panoramic dans une cellule (Notez: Panoramic peut donc déclencher des macros Excel, donc du VBA...). J'ai fait un programme interface en Panoramic sous Editeur, permettant d'interagir visuellement avec la base. Il y a aussi un fichier de documentation et mode d'emploi en format RTF. Je mettrai le programme à disposition pour tous ceux qui sont intéressés, mais il faut que je transmette le programme source de l'utilitaire (400 lignes de code), un fichier Excel de démonstration, un fichier Excel de base servant à créer de nouvelles bases de donnée, et le fichier de documentation en format RTF. C'est pourquoi j'ai tout chargé sur www.box.net, et j'enverrai le lien à tous ceux qui sont intéressés. S'il y a un moyen de le charger directement sur le forum, je suis preneur, mais je ne l'ai pas trouvé. Petit détail technique: n'ayant pas encore la possibilité de Container_Option dans la dernière version officielle, j'ai contourné le problème avec une colonne d'options, puis 3 champs liste qui apparaissent individuellement, selon les besoins de l'option sélectionnée dans la colonne des options. Cela me permet de gérer des sous-options dépendant d'une option principale. Un dernier point: le programme est fait en anglais (messages, commentaires dans les sources, pour le proramme Panoramic comme pour les macros Excel. La documentation est en français. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Ouh Mar 5 Jan 2010 - 12:38 | |
| Ouh là, c'est compliqué, ça ! Tu as l'air calé ! Si tu nous expliquais ? Une base de donnée de type ISAM, c'est donc une "Indexed Sequential Access Method" Soit. Mais en bon français, ça sert à quoi ? Et j'ai vu que tu as découvert le moyen de déclencher des macros Excel à partir de Panoramic, ça m'intéresse, ça, tu fais comment ? | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Base de données de type ISAM par Excel sous PANORAMIC Mar 5 Jan 2010 - 12:55 | |
| Je suis curieux de voir çà, car une base de données est des plus utile. Dans mon prog en cours mes bases de données ressemenble plus à de la gestion de fichiers qu'une vrai base de type ACCESS. Pour la programmation buisiness çà doit être super utile.
A+ | |
| | | Invité Invité
| Sujet: Re: Base de données de type ISAM par Excel sous PANORAMIC Mar 5 Jan 2010 - 14:28 | |
| J'ai pas exel, donc je ne suis pas dans le coup. Pour ce qui est de télécharger des fichier, il y a celui qu'emploie Jack, sur lequel on télécharge les version instantanées. [url] http://dl.free.fr/wiki/index.php/Accueil[/url]J'ai pas encore fait l'essai, mais cela devrait fonctionner. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Base de données de type ISAM par Excel sous PANORAMIC Mar 5 Jan 2010 - 16:45 | |
| Bonjour, Pour ce qui est le site de chargement, je n'ai pas réussi. Cependant, j'ai tout mis sur www.box.net et je donnerai accès à ceux qui s'y intéressent. Ils recevront alors une "invitation" par ce site. ISAM est un système de gestion de données, souvent mais faussement appelée base de données. Il s'agit en fait d'un fichier avec une ou plusieures clés d'accès, permettant d'accéder à un enregistrement directement pas une clé (un nom, un numéro de téléphone ou un code produit, par exemple), ou sequentiellement en marche avant ou arrière, dans l'ordre d'une clé particulière. Imaginez un fichier client, avec une clé par nom client, une autre par code postal suivi du nom du client, et une troisième par numéro de téléphone. On imagine tout de suite les accès possibles... PISAM pemet de créer, pour un fichier, de 1 à 4 clés indépendantes; chaque clé peut avoir de 1 à 4 segments non consécutifs dans l'enregsitrement. Ce dernier peut être de longueur variable, mais doit être suffisamment long pour comprendre tous les segments de clés. On peut bien sûr ajouter, supprimer ou modifier des enregistrements à volonté, y compris dans les zones clé. Les limitations sont celles d'Excel, en ce qui concerne les longueurs et nombres d'enregistrements (plusieurs dizaines de milliers). Ne cherchez pas un miracle de performance: le but était une démonstration de faisabilité et non la construction d'une formule 1... Ce système existe depuis longtemps en informatique de gestion, et il en existe des très performants. Je n'ai pas prétendu avoir réinventé la ficelle à couper le beure: ce qui est intéressant ici, c'est de démontrer que malgré ses moyens très limités par rapport à Excel (essentiellement marche/arrêt d'Excel, ouverture/fermeture de fichiers et lecture/écriture d'une seule cellule), PANORAMIC peut en réalité piloter l'ensemble des fonctions Excel possibles, y compris les macros et des fonctions affectant de larges plages de données. Pour cela, il suffit de placer une petite macro Excel dans la première feuille. Pour cela, sous Excel, choisir le menu outils/macro/macros/modifier, cliquer dans le volet de gauche sur VBAProject, puis Microsoft Excel Objets, puis Feuil1, et insérer la macro suivante: __________________________________________________ Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim c As Range Dim cmd As String Dim num As Integer Dim i As Integer For Each c In Target If c.Address(False, False) = "B3" Then i = InStr(1, c, "(") If i > 0 Then cmd = Left(c, i - 1) num = Val(Mid(c, i + 1)) Else cmd = c num = 0 End If Select Case cmd Case "PISAMinit": init_PISAM (num) ' initialise the PISAM file for n indexes Case "PISAMkey": define_key (num) ' define key number num Case "PISAMadd": add_record ' add a record, updates indexes Case "PISAMselect": select_key (num) ' select en index Case "PISAMfind": find_key (0) ' find (not read) a record by index value Case "PISAMread": find_key (1) ' read the actual record Case "PISAMdelete": delete_record ' delete the actual record Case "PISAMupdate": update_record ' update the actual record ans indexes Case "PISAMnext": read_next ' read next record in current index Case "PISAMprevious": read_previous ' read previous record in current index Case "PISAMfirst": read_first ' read first record in current index Case "PISAMlast": read_last ' read last record in curent index Case "PISAMrewind": rewind_file ' rewinds the current index (next read gets first record) End Select End If Next c End Sub ___________________________________________________________________ Cette macro sera appelée à chaque changement d'une cellule de cette page. Comme je ne m'intéresse qu'à ma cellule d'action B3, je fais une boucle pour filtrer, j'analyse la syntaxe (simple) de mes codes action (on aurait aussi pu passer des codes numériques ce qui serait plus simple) et je dispatche ves des macros Excel en VBA qui réalisent les fonctions spécifiques. Je les ai placés dans module1, pas dans la feuille; comme ça, ils sont accessibles partout sans tenir compte du contexte des feuilles. J'utilise 3 feuilles pour PISAM: la première est PISAM_Header contenant la définition générale du fichier et des clés ainsi que le contexte actuel du fichier (position courante, indexe sélectionné) de même que les cellules de communication avec PANORAMIC: B3=code action, B4=données en entrée, B5=données en sortie, B6=code erreur. On aurait aussi bien pu imaginer plusieures cellules actives sur la première page, une pour chaque action, à la manière d'une form de PANORAMIC avec des boutons... Il n'y a pas de limites à l'imagination. Voici, à titre d'exemple, une des macros réalisant une fonction appelée par celle ci-dessus: _________________________________________________________________ Sub select_key(n) ' ' This routine selects a defined key (keys 1 to 4). ' Coditions: ' index number must be comprised between 1 and number of keys for the file ' Errors: ' -1=busy, not yet ready ' 0=ready, done, OK ' 2=invalid key number ' Dim nidx As Integer '----------- set "busy" Call busy_code Range("E2").Select ' default: no record present ActiveCell.FormulaR1C1 = 0 '----------- check parameters nidx = Range("B1") If n < 1 Or n > nidx Then ' key number out of range ? Call return_code(2) Exit Sub End If If nidx = n Then ' key already selected ? Call return_code(0) Exit Sub End If Range("K1").Select ' remember selected key number ActiveCell.FormulaR1C1 = n nrec = Range("E1") ' fetch number of records Sheets("PISAM_Index").Activate ' switch to the index page ActiveSheet.Unprotect ' and allow access Range("A3:F" + Format(nrec + 2)).Select ' sort by active index Selection.Sort Key1:=Range(Chr(Asc("B") + n) + "3"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal ActiveSheet.Protect ' reprotect the index sheet Sheets("PISAM_Header").Activate ' switch to the header page Range("H3").Select ' set the "next read" pointer ActiveCell.FormulaR1C1 = 1 ' to the first slot of current index '----------- set "ready, done, OK" Call return_code(0) End Sub Sub return_code(error_code) Sheets("PISAM_Header").Activate Range("B6").Select ActiveCell.FormulaR1C1 = error_code ActiveSheet.Protect Application.ScreenUpdating = True End Sub Sub busy_code() Application.ScreenUpdating = False ActiveSheet.Unprotect Sheets("PISAM_Header").Activate Range("B6").Select ActiveCell.FormulaR1C1 = -1 End Sub _______________________________________________________________________ A la fin, vous avez les deux sous-programmes permettant de gérer la cellule B6 contenant le code erreur. Je vous transmets aussi le source de mon interface visuel fait avec PANORAMIC (463 lignes de code): ________________________________________________________________________ ' ' test_PISAM ' ' This program provides an interface to manage de test-PISAL.xls file. ' It is a demonstration of PISAM's features, and can be used as a starting ' point to realize a data base manager, by allowing the selection of ' different database files. ' label On_Click_Button_3 label On_Click_Button_40 label load_excel, create_form, create_objets ' label opt_init, opt_key, opt_sel, opt_none, go_exec label opt_init label opt_key label opt_sel label opt_none label go_exec label define_actions, define_options dim objet_action% dim objet_input_data% dim objet_output_data% dim objet_status% dim object_status_text% dim x%, i%, code% dim rep$ rem ---------------------- here starts the main routine objet_action% = 31 objet_input_data% = 5 objet_output_data% = 7 objet_status% = 9 object_status_text% = 39 gosub create_form x% = 10 gosub define_actions x% = 350 gosub define_options gosub create_objets gosub load_excel end rem ------------------------------ create the single form create_form: left 0,223 top 0,30 width 0,600 height 0,700 caption 0,"test de PISAM avec PANORAMIC" return rem ------------------------------ create the objects of the form create_objets: rem button to execute the selected function button 3 left 3,10 top 3,475 caption 3,"Execute" on_click 3,On_Click_Button_3 alpha 4 left 4,18 top 4,400 caption 4,"Input" rem enter the PISAM input data here edit 5 left 5,126 top 5,400 width 5,350 rem a hint for the input data will be shown here alpha 49 left 49,126 top 49,425 width 49,350 caption 49,"Please select a function" alpha 6 left 6,18 top 6,525 caption 6,"Output" rem the PISAM output data will be shown here alpha 7 left 7,126 top 7,450 width 7,525 height 7,29 caption 7," " color 7,255,255,255 alpha 8 left 8,18 top 8,550 caption 8,"Status" rem the PISAM status code will be shown here alpha 9 left 9,124 top 9,550 width 9,30 caption 9,"0" color 9,254,254,254 rem the PISAM status code will be translated here alpha 39 left 39,170 top 39,550 width 39,300 caption 39," " color 39,254,254,254 rem the selected action code is shown here alpha 31 left 31,126 top 31,375 width 31,300 caption 31," " color 31,254,254,254 rem this button terminates the program button 40 left 40,10 top 40,585 caption 40,"Exit" on_click 40,on_click_button_40 return rem --------------------- load Excel and test_PISAM.xls load_excel: EXCEL_START wait 5000 EXCEL_FILE_OPEN 1,"C:\Documents and Settings\Klaus\Mes documents\Mes projets Panoramic\test_PISAM.xls" wait 5000 caption 7," " return rem --------------------- special objects: action definitions define_actions: option 11 left 11,x% top 11,15 width 11,100 caption 11,"PISAMinit" on_click 11,opt_init alpha 51 left 51,x%+100 top 51,15 width 51,250 caption 51,"initialize en empty PISAM structure" option 12 left 12,x% top 12,40 width 12,100 caption 12,"PISAMkey" on_click 12,opt_key alpha 52 left 52,x%+100 top 52,40 width 52,250 caption 52,"add or redifine a key definition" option 13 left 13,x% top 13,65 width 13,100 caption 13,"PISAMselect" on_click 13,opt_sel alpha 53 left 53,x%+100 top 53,65 width 53,250 caption 53,"select a defined key" option 14 left 14,x% top 14,90 width 14,100 caption 14,"PISAMadd" on_click 14,opt_none alpha 54 left 54,x%+100 top 54,90 width 54,250 caption 54,"add a record to the data base" option 15 left 15,x% top 15,115 width 15,100 caption 15,"PISAMfind" on_click 15,opt_none alpha 42 left 42,x%+100 top 42,115 width 42,250 caption 42,"find a key in current index" option 16 left 16,x% top 16,140 width 16,100 caption 16,"PISAMread" on_click 16,opt_none alpha 44 left 44,x%+100 top 44,140 width 44,250 caption 44,"read a record by key in current index" option 17 left 17,x% top 17,165 width 17,100 caption 17,"PISAMnext" on_click 17,opt_none alpha 55 left 55,x%+100 top 55,165 width 55,250 caption 55,"read next record in current key order" option 18 left 18,x% top 18,190 width 18,100 caption 18,"PISAMprevious" on_click 18,opt_none alpha 56 left 56,x%+100 top 56,190 width 56,250 caption 56,"read previous record in current key order" option 19 left 19,x% top 19,215 width 19,100 caption 19,"PISAMfirst" on_click 19,opt_none alpha 57 left 57,x%+100 top 57,215 width 57,250 caption 57,"read first record in current key order" option 20 left 20,x% top 20,240 width 20,100 caption 20,"PISAMlast" on_click 20,opt_none alpha 58 left 58,x%+100 top 58,240 width 58,250 caption 58,"read last record in current key order" option 21 left 21,x% top 21,265 width 21,100 caption 21,"PISAMupdate" on_click 19,opt_none alpha 59 left 59,x%+100 top 59,265 width 59,250 caption 59,"update the last read or created record" option 22 left 22,x% top 22,290 width 22,100 caption 22,"PISAMdelete" on_click 22,opt_none alpha 60 left 60,x%+100 top 60,290 width 60,250 caption 60,"delete the last read or created record" option 23 left 23,x% top 23,315 width 23,100 caption 23,"PISAMrewind" on_click 23,opt_none alpha 61 left 61,x%+100 top 61,315 width 61,250 caption 61,"rewind the current index" return rem ------------------- special objects:parameter definitions for the actions define_options: list 71 left 71,x% top 71,40 item_add 71,"1 key" item_add 71,"2 keys" item_add 71,"3 keys" item_add 71,"4 keys" height 71,60 on_click 71,go_exec hide 71 list 72 left 72,x% top 72,40 item_add 72,"for key 1" item_add 72,"for key 2" item_add 72,"for key 3" item_add 72,"for key 4" height 72,60 on_click 72,go_exec hide 72 list 73 left 73,x% top 73,40 item_add 73,"key 1" item_add 73,"key 2" item_add 73,"key 3" item_add 73,"key 4" height 73,60 on_click 73,go_exec hide 73 return rem -------------------- on_click routines On_Click_Button_3: rem code when on_click EXCEL_WRITE "B4",text$(objet_input_data%) EXCEL_WRITE "B3",caption$(objet_action%) wait 1000 rep$ = EXCEL_READ$("B6") while val(rep$)<0 wait 1000 rep$ = EXCEL_READ$("B6") end_while caption objet_status%,rep$ select val(rep$) case 0: caption object_status_text%,"OK, success" case 1: caption object_status_text%,"file not empty" case 2: caption object_status_text%,"invalid key number" case 3: caption object_status_text%,"invalid segment definition" case 4: caption object_status_text%,"key could not be extracted" case 5: caption object_status_text%,"no key actually selected" case 6: caption object_status_text%,"end of file" case 7: caption object_status_text%,"no valid current position" case 8: caption object_status_text%,"key too small (warning only)" end_select caption objet_output_data%,EXCEL_READ$("B5") return On_Click_Button_40: rem code when on_click EXCEL_STOP terminate return opt_init: hide 72 hide 73 show 71 goto go_exec opt_key: hide 71 hide 73 show 72 goto go_exec opt_sel: hide 71 hide 72 show 73 goto go_exec opt_none: hide 71 hide 72 hide 73 goto go_exec go_exec: for i%=11 to 23 if checked(i%)=1 select i% case 11 x% = item_index(71) if x%=0 then x% = 1 caption 31,"PISAMinit("+str$(x%)+")" caption 49,"No input data is required" case 12 x% = item_index(72) if x%=0 then x% = 1 caption 31,"PISAMkey("+str$(x%)+")" caption 49,"Define the key: n_seg,start1,len1,start2,len2,..." case 13 x% = item_index(73) if x%=0 then x% = 1 caption 31,"PISAMselect("+str$(x%)+")" caption 49,"No input data is required" case 14 caption 31,"PISAMadd" caption 49,"Enter the complete record data" case 15 caption 31,"PISAMfind" caption 49,"Enter a complete record containing the key" case 16 caption 31,"PISAMread" caption 49,"Enter a complete record containing the key" case 17 caption 31,"PISAMnext" caption 49,"No input data is required" case 18 caption 31,"PISAMprevious" caption 49,"No input data is required" case 19 caption 31,"PISAMfirst" caption 49,"No input data is required" case 20 caption 31,"PISAMlast" caption 49,"No input data is required" case 21 caption 31,"PISAMupdate" caption 49,"Enter the complete new record data" case 22 caption 31,"PISAMdelete" caption 49,"No input data is required" case 23 caption 31,"PISAMrewind" caption 49,"No input data is required" end_select exit_for end_if next i% return _______________________________________________________________________________________ Seuls les fichier Excel (indispensables) et la documentation en français et anglais ne peut pas être transmise ainsi, mais comme dit plus haut, c'est accessible par www.box.net. Contactez-moi, et vous aurez l'invitation pour vous connecter. Mon source PANORAMIC peut certainement être mieux écrit; je l'ai fait en trois jours pour tester la faisabilité de la chose avec PANORAMIC (Et la plupart du temps, je me suis battu avec des problèmes de gestion d'écran, de largeur et de positionnement des objets... Un IDE à jour et surtout permettant d'ajouter des sous-programmes aurait permis de faire cela en quelques heures. Mais voilà: je suis à la retraite et passionné de programmation. J'ai utilisé des dizaines de langages et outils de programmation dans ma vie professionnelle, et j'ai largement travaille avec Windev de PCSoft. Mais maintenant, sorti du contexte professionnel, je n'ai pas les moyens d'investir dans ces licences commerciales couteuses. J'ai donc cherché un environnement de programmation gratuit, et PANORAMIC tombe à pic. Je continuerai à en explorer les possibilités, et je me permettrai de temps en temps de soumettre quelques idées ou quelques sources. Merci pour ce bel outil ! Je souhaite une bonne et heureuse année à tous ! Que la Force soit avec vous ! Cordialement Klaus P.S. ma réponse a tardé, car après avoir tout saisi, j'ai fait une fausse manip en validant et j'au tout effacé ! Donc, cent fois sur me métier ton ouvrage tu mettras... et me revoilà ! | |
| | | Invité Invité
| Sujet: Re: Base de données de type ISAM par Excel sous PANORAMIC Mar 5 Jan 2010 - 18:30 | |
| J'ai vraiment rien compris qui peut me M'expliquer un peut ! Et pourquoi en anglais alors que tu es français ! Et cosmos tu peut installer excel ! |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Base de données de type ISAM par Excel sous PANORAMIC Mar 5 Jan 2010 - 19:10 | |
| - Citation :
- P.S. ma réponse a tardé, car après avoir tout saisi, j'ai fait une fausse manip en validant et j'ai tout effacé ! Donc, cent fois sur le métier ton ouvrage tu mettras... et me revoilà !
Hé oui, tout les découvreurs de PANORAMIC passent par ce désagrément. Les options pour enregistrer et enregistrer sous son différentes de la plupart des programmes Microsof (comme world, exel, power point,....) il faut s'y habituer. Je vais tenter de faire fonctionner ton programme. Le niveau semble élevé pour moi, mais qui ne tente rien n'a rien. A bientôt | |
| | | Invité Invité
| Sujet: Re: Base de données de type ISAM par Excel sous PANORAMIC Mar 5 Jan 2010 - 19:29 | |
| J'ai peu d'argent à dépenser. j'ai bien des dépenses plus prioritaires .Avec une petites retraites, et 2 gamins au lycée, ne m'en demandez pas plus. (et il y a le reste) Ce que j'aimerai bien, ce serait que les commandes exel, puissent-être aussi compatible avec OpenOffice. Pourquoi exclure les autres. De toute façon, si je suis l'un des seuls à ne pas avoir exel, oubliez ce paragraphe. @+ |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Base de données de type ISAM par Excel sous PANORAMIC Mar 5 Jan 2010 - 19:51 | |
| Bonsoir à tous ! Pour Nicolas: en ce qui concerne la langue, je suis Allemand, bien que résidant en France depuis longtemps. Pour moi, il était tout naturel de développer en anglais, comme je l'ai toujours fait. Je suis d'ailleurs tombé sur PANORAMIC et le forum d'abord par le site en langue anglaise; je n'ai trouvé la version française que plus tard. Le programme lui-même est facile à mettre en français, et la documentation complète est disponible dans les deux langues, alors... Pour Jean-Claude: pour faire marcher le programme, ilfaut IMPERATIVEMENT les fichiers test_PISAM.xls et pour aller plus loin PISAM_MDF.xls. Ils sont disponibles sur www.box.net et j'ai envoyé une invitation - c'est gratuit et sans danger pour se connecter dessus, et on peut télécharger à volonté. Encore un petit mot: va véritable complexité n'est pas du côté PANORAMIC, bien que j'aie essayé d'utiliser certaines possibilités pour présenter un aspect agréable, avec des champs d'indication et d'aide qui s'actualisent automatiquement, etc. La complexité est plutôt du côté Excel et VBA, et là l'aide en ligne excelllente est d'un grand secours, tout comme la possibilité d'enregister des frappes clavier comme macro et de les éditer ensuite. En fait, l'essentiel a été construit de cette manière. D'ailleurs, à cette occasion, je tiens à rendre hoimmage au système d'aide de PANORAMIC qui est éblouissant. Il pourrait encore gagner en puissance si les indications dans le manuel de référence sous la rubrique "en rapport" fonctionnaient comme des liens hypertexte... mais je sais qu'il suffit de rechercher me mot correspondant dans la colonne de droite, et c'est aussi bien. Je me suis approprie PANORAMIC avec le manuel de référence ouvert en permanence; c'était facile. BRAVO ! Allez, bonne soirée à tous ! Cordialement Klaus | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Base de données de type ISAM par Excel sous PANORAMIC Mar 5 Jan 2010 - 19:53 | |
| Très intéressant. J'ai chargé tes sources, mais malheureusement, l'exécution se termine sur la ligne: - Code:
-
EXCEL_FILE_OPEN 1,"C:\Documents and Settings\Klaus\Mes documents\Mes projets Je pense que cette ligne a été coupée car il n'y a pas de guillemet fermant et on ne charge pas un fichier d'extension xls. - Citation :
- Et la plupart du temps, je me suis battu avec des problèmes de gestion d'écran, de largeur et de positionnement des objets... Un IDE à jour et surtout permettant d'ajouter des sous-programmes aurait permis de faire cela en quelques heures.
Panoramic possède un IDE. Il n'est certes pas à jour, mais il peut servir à placer précisément les objets sur un FORM, puis à transférer le code obtenu dans l'EDITEUR pour continuer à programmer. Un sous-programme est obtenu en faisant un clic DROIT sur un objet. L'IDE sera bientôt remis à jour. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Vos sources, vos utilitaires à partager :: Base de données Mer 6 Jan 2010 - 9:44 | |
| Bonjour,
Je suis désolé pour l'ouverture du fichier. En fait, il faut mettre le chemin complet vers le fichier test_PISAM.xls dans cette ligne, car sinon, Excel tente d'ouvrir le fichier dans le dernier répertoire utilisé par Excel, et ce n'eat pas forcément là que ce trouve ce fichier. Donc, effectivement, cette ligne est à adapter selon l'installation du moment.
J'ai bien compris les problèmes autour des versions de l'IDE, et loin de moi de voloir critiquer cela. C'est effectivement comme ça que je l'utilise pour le moment: construction rapide la la partie visuelle avec l'IDE, puis adaptation de la logique avec l'éditeur.
Je sais bien qu'avec un click droit dans l'IDE, on crée un sous-programme; c"est du type on_click. C'est parfait pour attribuer une fonctionnalité à un objet. Je pensais plutôt pouvoir créer un sousprogramme indépendant qui pourrait être appelé par des on_click d'autres objets. Enn fait, j'ai contourné le problème en créant des alpha caché à l'exécution, auxquels j'attribue une routine on_click que je peux alors appeler par les on_click d'autres objets. C'est une façon de faire, mais il y en a surement d'autres.
Merci pour votre intérêt.
Cordialement Klaus | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Base de données de type ISAM par Excel sous PANORAMIC Mer 6 Jan 2010 - 11:50 | |
| J'ai téléchargé, j'ai changé le chemin d'accès, à priorie çà fonctionne. Mais j'aurait besoin d'une démonstration car je n'arrive pas à démarrer une nouvelle base. Le tutoriel est un peu complexe. Désolé de t'embeter, mais comme cela à l'air intéressant, je voudrais réessayer. A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Base de données de type ISAM par Excel sous PANORAMIC Mer 6 Jan 2010 - 14:17 | |
| Bonjour, Jean-Claude,
Tu ne m'embêtes pas du tout; je suis content que mon travail puisse trouver un intérêt pour d'autres.
Alors, pour créer une nouvelle base, il y a deux moyens: - soit on efface ce qui se trouve dans la base de test nommée test_PISAM.xls - soit on part directement du fichier maître PISAM_MDF.xls en créant une nouvelle base, par Excel. Piur cela, il faut ouvrir ce fichier maître directement par Excel, puis choisir le menu fichier/enregister sous, puis spécifier le nom souhaité (ex: PISAM_JC.xls), puis sortir d'Excel. ne pas oublier dans ce cas d'adapter le chemin d'accès dans test_PISAM.bas pour ouvrir ce nouveau fichier (on peut aisément ajouter un dialogue d'ouverture de fichiers dans ce programme...).
Dans tous les cas, on lance ensuite test_PISAM et on effectue la suite suivante d'actions:
1. cocher PISAMinit en choisissant le nombre de clés voulus pour la nouvelle base dans la liste qui apparaît à droite dès que l'on coche cette option, puis bouton Execute. Il doit renvoyer 0 = OK, succès, prêt.
2. maintenant, il faut définir les clés. C'est l'étape capitale dansz la conception de la base, puisqu'elle détermine les moyens d'accès aux données. Il faut don d'abord réfléchir sur la structure d'enregistrement que l'on veut utiliser. Le mieux c'est de l'écrire sur papier, du type:
debut Longueur Utilisation --------------------------------------------------- 1 6 Code client 7 10 Nom client 17 5 Code postal 22 10 Ville 32 10 Téléphone 42 x données supplémentaires de longueur variables
On définit ensuite les clés (à titre d'exemple):
cle segments débuts longueurs utilisation --------------------------------------------------------------------- 1 1 1 6 accès par code client 2 2 17,7 5,10 accès par code postel/nom client (soit en ordre géographique, ordre alphanétique pour un même lieu) 3 1 32 10 accès par numérop de téléphone
Tu vois le principe ?
Donc, on peut passer à la saisie:
2.a. cocher la fonction PISAMkey, puis "for key 1 dans la liste de droite (pour notre exemple) dans "input data", saisir la ligne 1,1,16 puis cliquer sur Execute. Cela doit renvoyer status 0. 2.b. recommencer pour la deuxième clé, avec la "for key 2" et la ligne: 2,17,5,7,10 2.c. recommencer pour la troisième clé, avec "for key 3" et la ligne: 3,32,10
Voila, la structure est crée et opérationnelle. Je conseille dans ce cas de sortir du programme. Excel demande alors si l'on veut enregistreer les modification: il faut réponder Oui bien sûr.
3. On relance alors le programme pour ajouter des enregistrements. Commencer par choisir une clé (de préférence la clé 1), en cochant l'option PISAMselect, puis "key 1" dans la liste de droite, puis Execute. Cela doit afficher status 0.
On est prêt pour saisir les enregistrements. Il est utile de les avoir péparés auparavant sur papier, ayant pris soin de marquer les colonnes de la bonne largeur. Si un champs est plus court, il faut le compléter pas des espaces à droite (si texte) ou des zéros à gauche (si numérique). On saisit alors dans "Input data", des enregistrements du type:
100312Dupont 88389Savillon 0122334455données libres où 100312 est le code client Dupont suivi de 4 espaces est le nom du client 88389 est le code postal Savillon suivi de 2 espaces est le nom de la ville (fictif) 0122334455 est le numéro de téléphone (fictif) données libres est ce que le libellé indique
Je crois qu'un voit bien le format de saisie. On capte immédiatement aussi l'utilité d'une form PANORAMIC appication "saisie fichie client" aui permettrait de saisir ces données de façon plus conviviale, mais là, on rentre déjà dans l'écriture d'une application de gestion...
Alors, pour enregistrer ces données, cocher l'option "PISAMadd", puis cliquer sur Execute. Le status 0 doit s'afficher.
On réitère ce processus autant de fois que nécessaire, pour peupler la base. A tout moment, plus tard, on peut en recréer d'autres. Il peut y avoir des doubles sur les clés (par exemple, deux clients homonymes dans la même ville). Techniquement, cela ne pose aucun problème. On peut l'éviter en incluant par exemple le code client dans la clé no 2, de la manière suivante dans l'étape 2.b.: 3,17,5,7,10,1,6 En fait, on construit alors une clé 2 composée de 3 segments: le code postal, suivi du com du client, suivi du code client et le tour est joué. On présuppose que le code client est unique. Pour s'en assurer, il suffirait, avant de créer un nouveau client, de chercher, par PISAMread, un client ayant le même code en clé 1. Si le status est 0, alors il existe déjà et il faut choisir un autre code...
Après le peublement initial, je conseille de sortir du programme et autoriser Excel à enregistrer les modifications.
On a alors une base dans laquelle on peut se "promener", en changeant de clé par PISAMselect, puis lire par PISAMfirst, PISAMnext, PISAMprevious ou PISAMlast sans avoir à spécifier de données en entrée. Pour une lecture en accès direct par une clé, il faut déposer da,s "input data" le début de l'enregistrement contenant l'ENSEMBLE des clés définies, puis cocher l'option PISAMread. Si l'enregistrement existe, il revient dans "output data" avec status 0. Si la clé recherchée n'existe pas, mais il y a un enregistrement avec une clé supérieure, il est retourné et le status est 8 = key too small (warning only). Si la clé est plus grande que la plus grande clé du fichier, ou si le fichier est vide, "output data" est inchangé et le status est 6 = end of file.
On peut modifier un enregistrement pas PISAMupdate (ne pas oublier de placer le nouvel enregistrement complèt dans "input data"), ou supprimer par PISAMdelete.
En sortant du programme, on a le choix par Excel d'enregistrer les modifications (recommandé si tout est bon) ou de refuser l'enregistrement si l'on a fait une fausse manip dans la base (supprimé un enregistrement par erreur, par exemple), et la base sera restituée dans son état avant le début du dernier lancement du programme.
Bon, je sais que j'ai été un peu bavard, mais je pense que comme ça, tu y verras plus clair. Encore une fois: mon programme n'est PAS un outil de gestion, mais une démonstration des possibilités d'utilisation d'Excel par PANORAMIC. Mais on voit qu'il est facilement possible d'ajouter des Form PANORAMIC pour effectuer les saisies, afficher les résultats, lancer des traitements etc, ce qui ouvre la voie à une vraie application de gestion. De plus, avec les fonctions graphiques présentes dans PANORAMIC, il est facile de réaliser des graphiques de gestion, pour documenter des statistiques, représenter des parts de marché etc. La seule chose qui manquerait à cela, ce serait un peu plus de modularité, mais un aura peut-être l'occasion d'en parler en d'autres lieux du forum.
Bon courage !
Cordialement Klaus | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Base de données de type ISAM par Excel sous PANORAMIC Mer 6 Jan 2010 - 14:52 | |
| - Citation :
- n'ayant pas encore la possibilité de Container_Option dans la dernière version officielle, j'ai contourné le problème avec une colonne d'options, puis 3 champs liste qui apparaissent individuellement, selon les besoins de l'option sélectionnée dans la colonne des options.
Tu peux télécharger la dernière version instantanée qui contient l'utilisation des CONTAINER_OPTION. Toutes les versions suivantes de PANORAMIC l'utiliseront et de la même façon. - Citation :
- pour faire marcher le programme, ilfaut IMPERATIVEMENT les fichiers test_PISAM.xls et pour aller plus loin PISAM_MDF.xls. Ils sont disponibles sur www.box.net
Je suis aussi intéressé pour le téléchargement de tout l'ensemble. Peux-tu m'envoyer le code du téléchargement? Je ne sais pas si c'est encore la peine de le préciser car sur ce forum tout le monde en est conscient, je suis prêt à développer toute nouvelle commande qui faciliterait l'utilisation d'EXCEL par PANORAMIC. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Base de données de type ISAM par Excel sous PANORAMIC Mer 6 Jan 2010 - 15:27 | |
| Bonjour, Jack
Je t'ai envoyé une invitation pour comn site de stockage, tout comme à Jean-Claude. Ces modules sont à libre disposition; si tu veux les adapter ou mettre à disposition à d'autres sous une forme ou une autre, n'hésite pas. L'important, c'est de faire avancer le schmilblick...
Cordialement Klaus | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Base de données de type ISAM par Excel sous PANORAMIC Jeu 7 Jan 2010 - 23:43 | |
| Bonsoir, Pour monter une application concrète de PISAM et pour démontrer l'intérêt d'un tel outil dans des applications de gestion, je mets à disposition, toujours via www.box.net, un outilde gestion de contacts très simple utilisant PISAM à travers Excel. Il s'agit d'un programme permettant de gérer uune base de contacts avec nom, adresse complète, téléphone et notes libres. 3 clés d'accès: le nom, la ville et le téléphone. On peut par exemple lire un enregistrement par le nom, lire le suivant ou précédant, puis lire le suivant ou précédant selon le téléphone ou la ville, etc. On pourrait donc chercher un numéri de téléphone, puis afficher tous les contacts de la même ville ou du même département... Ceci se fait tès simplement en cliquant sur les petites flèches "<" et ">" à côté des champs correspondants; les boutons "?" lancent une recherche par clé dont la valeur est présente dans le champ corresponfant. Là encore, le but du programme n'est pas d'offrir un gestionnaire de contact révolutionnaire, mais de montrer une application de PISAM et ses atouts fonctionnels, afin que ce soit plus parlant pour ceux qui n'ont pas l'habitude de ce genre d'applications. Pour info, je mets le source "contacts.bas" ici, mais il faut télécharger la base "contacts.xls" sur www.box.net (elle contient 3 contacts pour pouvoir jouer). ---------------------------- contacts.bas ------ (580 lignes) -------------------- rem ------------------------------ déclarations label creer_objets, initialisations, aff_boutons, format_enreg, wait_excel label aff_enreg, creer_fenetres, lire_contact label on_click_sortir, on_click_creer, on_click_nouveau, on_click_civil label on_click_enregistrer, on_click_supprimer label on_click_cherche_nom, on_click_cherche_ville, on_click_cherche_telephone label on_click_pre_ville, on_click_sui_ville, on_click_pre_nom label on_click_sui_nom, on_click_pre_tel, on_click_sui_tel label ne_supprime_pas, supprime_ce_contact dim presence_excel%, longueur_mini%, numero_cle%, action$, contact_excel_name$ dim mode_operation%, enreg$, blanc50$, status$, flag%, civil$ rem -------------------------- programme principal ---------------- rem rem on crée les objets de la form 0 rem puis un crée une form 100 qui est cachée tout de suite rem elle servira de form de confirmation pour les suppressions rem rem --------------------------------------------------------------- contact_excel_name$ = "C:\Documents and Settings\Klaus\Mes documents\Mes projets Panoramic\contacts.xls" gosub creer_objets gosub creer_fenetres gosub initialisations end rem -------------------------------------------------------------------- rem rem création de la form 100 rem ceci est un écran de confirmation pour les suppressions rem rem Cette form contient deux boutons. Un clic sur ces boutons cache rem à nouveau cette form. Le clic sur le bouton "Oui" positionne une rem variable flag%=1 ce qui permet la suppression. Par défaut, rem cette variable est à zéro. rem rem --------------------------------------------------------------------- creer_fenetres: form 100 hide 100 caption 100,"ATTENTION !" full_space 100 alpha 101 parent 101,100 top 101,300 left 101,300 color 101,0,255,0 caption 101,"Voulez-vous vraiment supprimer le contact "+trim$(text$(9))+" ?" button 102 parent 102,100 top 102,360 left 102,330 width 102,150 caption 102,"Non, j'abandonne" on_click 102,ne_supprime_pas button 103 parent 103,100 top 103,360 left 103,550 width 103,40 caption 103,"Oui" on_click 103,supprime_ce_contact return supprime_ce_contact: flag% = 1 ne_supprime_pas: hide 100 if flag%=1 excel_write "B3","PISAMdelete" gosub wait_excel if val(status$)>0 message "Erreur "+status$ mode_operation% = 0 gosub on_click_nouveau else message "OK" end_if end_if flag% = 0 return rem --------------------------------------------------------------- rem rem création des objets de la form 0: alpha, list, edit, button rem rem ---------------------------------------------------------------- creer_objets: left 0,216 top 0,187 width 0,600 height 0,492 caption 0,"Contacts" alpha 1 left 1,22 top 1,20 caption 1,"Civilité" alpha 2 left 2,22 top 2,91 caption 2,"Nom" alpha 3 left 3,22 top 3,134 caption 3,"Adresse" alpha 4 left 4,24 top 4,206 caption 4,"Ville" alpha 5 left 5,22 top 5,254 caption 5,"Téléphone" alpha 6 left 6,22 top 6,314 caption 6,"Note" list 8 left 8,107 top 8,20 height 8,56 on_click 8,on_click_civil edit 9 left 9,107 top 9,88 width 9,215 edit 10 left 10,107 top 10,131 width 10,220 edit 11 left 11,107 top 11,162 width 11,220 edit 12 left 12,108 top 12,203 width 12,54 edit 13 left 13,174 top 13,203 width 13,156 edit 14 left 14,106 top 14,251 edit 15 left 15,109 top 15,311 width 15,221 button 16 left 16,337 top 16,87 width 16,25 caption 16,"?" on_click 16,on_click_cherche_nom button 17 left 17,337 top 17,202 width 17,25 caption 17,"?" on_click 17,on_click_cherche_ville button 18 left 18,337 top 18,253 width 18,25 caption 18,"?" on_click 18,on_click_cherche_telephone button 19 left 19,463 top 19,32 caption 19,"Créer" on_click 19,on_click_creer button 20 left 20,463 top 20,64 caption 20,"Nouveau" on_click 20,on_click_nouveau button 21 left 21,463 top 21,104 caption 21,"Enregistrer" on_click 21,on_click_enregistrer button 22 left 22,463 top 22,183 caption 22,"Supprimer" on_click 22,on_click_supprimer button 23 left 23,463 top 23,300 caption 23,"Sortir" on_click 23,on_click_sortir button 24 left 24,370 top 24,89 width 24,21 height 24,21 caption 24,"<" on_click 24,on_click_pre_nom button 25 left 25,395 top 25,89 width 25,21 height 25,21 caption 25,">" on_click 25,on_click_sui_nom button 26 left 26,370 top 26,204 width 26,21 height 26,21 caption 26,"<" on_click 26,on_click_pre_ville button 27 left 27,395 top 27,204 width 27,21 height 27,21 caption 27,">" on_click 27,on_click_sui_ville button 28 left 28,370 top 28,255 width 28,21 height 28,21 caption 28,"<" on_click 28,on_click_pre_tel button 29 left 29,395 top 29,255 width 29,21 height 29,21 caption 29,">" on_click 29,on_click_sui_tel alpha 30 left 30,337 top 30,20 caption 30,"Mr." return rem ----------------------------------------------------------- rem rem initialisations générales rem rem ----------------------------------------------------------- initialisations: rem valeurs initiales: excel pas chargé, pas d'enregistrement présent, rem el longueur minimale de enreg contact pour couvrir les clés rem ainsi que quelques variables internes et la liste de civilités presence_excel% = 0 mode_operation% = 0 longueur_mini% = 216 blanc50$ = string$(50," ") civil$ = "Mr." item_add 8,"Mr." item_add 8,"Mme" item_add 8,"Mlle" rem afficher les boutons, lancer Excel et ouvrir le fichier gosub aff_boutons excel_start wait 5000 presence_excel% = 1 EXCEL_FILE_OPEN 1,contact_excel_name$ return rem ----------------------------------------------------------------- rem rem routines de service rem rem ces routines sont appelées à divers endroits du programme rem rem ----------------------------------------------------------------- rem affichage des boutins de fonction aff_boutons: select mode_operation% case 0 show 19 hide 21 hide 22 case 1 hide 19 show 21 show 22 end_select return rem création de enreg$ contenant le enregistrement actuel complèt format_enreg: enreg$ = "" rem Civilité if civil$="Mr." then enreg$ = enreg$ + "1" if civil$="Mme" then enreg$ = enreg$ + "2" if civil$="Mlle" then enreg$ = enreg$ + "3" rem nom sur 50 caractères enreg$ = enreg$ + left$(text$(9)+blanc50$,50) rem adresse 1 sur 50 caractères enreg$ = enreg$ + left$(text$(10)+blanc50$,50) rem adresse 2 sur 50 caractères enreg$ = enreg$ + left$(text$(11)+blanc50$,50) rem code postal sur 5 chiffres enreg$ = enreg$ + left$(text$(12)+"00000",5) rem ville sur 50 caractères enreg$ = enreg$ + left$(text$(13)+blanc50$,50) rem téléphone sur 10 caractères enreg$ = enreg$ + left$(text$(14)+blanc50$,10) rem note sur 100 caractères enreg$ = enreg$ + left$(text$(15)+blanc50$+blanc50$,100) return rem afficher un enregistrement aff_enreg: civil$ = left$(enreg$,1) if civil$="0" then civil$ = "1" if civil$="1" then civil$ = "Mr." if civil$="2" then civil$ = "Mme" if civil$="3" then civil$ = "Mlle" caption 30,civil$ text 9,mid$(enreg$,2,50) text 10,mid$(enreg$,52,50) text 11,mid$(enreg$,102,50) text 12,mid$(enreg$,152,5) text 13,mid$(enreg$,157,50) text 14,mid$(enreg$,207,10) if len(enreg$)>longueur_mini% text 15,mid$(enreg$,217,len(enreg$)-longueur_mini%) else text 15,"" end_if return rem attendre la fin d'une action Excel wait_excel: status$ = excel_read$("B6") while val(status$)<0 wait 500 status$ = excel_read("B6") end_while return rem ---------------------------------------------------------- rem rem routines on_click de la form 0 rem rem ---------------------------------------------------------- rem sortir on_click_sortir: if presence_excel%=1 then excel_stop terminate rem créer on_click_creer: gosub format_enreg excel_write "B4",enreg$ excel_write "B3","PISAMadd" gosub wait_excel if val(status$)=0 message "OK" mode_operation% = 1 gosub aff_boutons else message "Erreur "+status$ end_if return rem nouveau on_click_nouveau: caption 30,"Mr." text 9,"" text 10,"" text 11,"" text 12,"" text 13,"" text 14,"" text 15,"" mode_operation% = 0 civil$ = "Mr." gosub aff_boutons return rem recherche par nom on_click_cherche_nom: if len(text$(9))=0 message "Il n'y a pas de nom à chercher !" return end_if excel_write "B3","PISAMselect(1)" gosub wait_excel gosub format_enreg excel_write "B4", enreg$ excel_write "B3","PISAMread" gosub wait_excel if val(status$)=6 message "Non trouvé !" mode_operation% = 0 gosub on_click_nouveau else enreg$ = excel_read$("B5") gosub wait_excel gosub aff_enreg mode_operation% = 1 gosub aff_boutons end_if return rem recherche par ville on_click_cherche_ville: if len(text$(13))=0 message "Il n'y a pas de ville à chercher !" return end_if excel_write "B3","PISAMselect(2)" gosub wait_excel gosub format_enreg excel_write "B4", enreg$ excel_write "B3","PISAMread" gosub wait_excel if val(status$)=6 message "Non trouvé !" mode_operation% = 0 gosub on_click_nouveau else enreg$ = excel_read$("B5") gosub wait_excel gosub aff_enreg mode_operation% = 1 gosub aff_boutons end_if return rem recherche par téléphone on_click_cherche_telephone: if len(text$(14))=0 message "Il n'y a pas de téléphone à chercher !" return end_if excel_write "B3","PISAMselect(3)" gosub wait_excel gosub format_enreg excel_write "B4", enreg$ excel_write "B3","PISAMread" gosub wait_excel if val(status$)=6 message "Non trouvé !" mode_operation% = 0 gosub on_click_nouveau else enreg$ = excel_read$("B5") gosub wait_excel gosub aff_enreg mode_operation% = 1 gosub aff_boutons end_if return rem enregistrer un enregistrement modifié on_click_enregistrer: gosub format_enreg excel_write "B4", enreg$ excel_write "B3","PISAMupdate" gosub wait_excel if val(status$)>0 message "Erreur "+status$ else message "OK" end_if return rem supprimer un enregistrement on_click_supprimer: flag% = 0 show 100 return return rem lecture précédent par nom on_click_pre_nom: numero_cle% = 1 action$ = "previous" goto lire_contact rem lecture suivant par nom on_click_sui_nom: numero_cle% = 1 action$ = "next" goto lire_contact rem lecture précédent par ville on_click_pre_ville: numero_cle% = 2 action$ = "previous" goto lire_contact rem lecture suivant par ville on_click_sui_ville: numero_cle% = 2 action$ = "next" goto lire_contact rem lecture précédent par téléphone on_click_pre_tel: numero_cle% = 3 action$ = "previous" goto lire_contact rem lecture suivant par téléphone on_click_sui_tel: numero_cle% = 3 action$ = "next" goto lire_contact rem lire un contact en fonction des paramètres numero_cle% et action$ lire_contact: excel_write "B3","PISAMselect("+str$(numero_cle%)+") gosub wait_excel excel_write "B4", excel_read$("B5") excel_write "B3","PISAMread" gosub wait_excel excel_write "B3","PISAM" + action$ gosub wait_excel if val(status$)=0 enreg$ = excel_read$("B5") gosub wait_excel gosub aff_enreg else message "Errreur "+status$ end_if return rem changement de civilité on_click_civil: civil$ = item_index$( if civil$="" then civil$ = "Mr." caption 30,civil$ return ----------------------------------------------------------------------------- Bonne soirée à tous Klaus | |
| | | Invité Invité
| Sujet: Re: Base de données de type ISAM par Excel sous PANORAMIC Jeu 7 Jan 2010 - 23:58 | |
| J'ai testé ton code Klaus ça marche super bien !
P.S : S.V.P Klaus juste mettre ton code dans un encadré C'est le bouton en bas du bouton Gras à gauche. Tu clique sur ce bouton avant de mettre ton code et tu colle ton code. Après tu reclique sur le bouton code et c'est fini. Ou fait à ta manière. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Base de données de type ISAM par Excel sous PANORAMIC Ven 8 Jan 2010 - 0:44 | |
| Bonsoir, Nicolas, OK, je le ferai ainsi la prochaine fois: - Code:
-
Mon prochain code apparaîtra ainsi !
Merci pour l'astuce, et bonne soirée ! Klaus | |
| | | Contenu sponsorisé
| Sujet: Re: Base de données de type ISAM par Excel sous PANORAMIC | |
| |
| | | | Base de données de type ISAM par Excel sous PANORAMIC | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |