FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
Base de données de type ISAM par Excel sous PANORAMIC Emptypar jjn4 Aujourd'hui à 17:49

» select intégrés [résolu]
Base de données de type ISAM par Excel sous PANORAMIC Emptypar jjn4 Aujourd'hui à 17:00

» number_mouse_up
Base de données de type ISAM par Excel sous PANORAMIC Emptypar jjn4 Aujourd'hui à 11:59

» Aide de PANORAMIC
Base de données de type ISAM par Excel sous PANORAMIC Emptypar jjn4 Aujourd'hui à 11:16

» trop de fichiers en cours
Base de données de type ISAM par Excel sous PANORAMIC Emptypar lepetitmarocain Aujourd'hui à 10:43

» Je teste PANORAMIC V 1 beta 1
Base de données de type ISAM par Excel sous PANORAMIC Emptypar papydall Aujourd'hui à 4:17

» bouton dans autre form que 0
Base de données de type ISAM par Excel sous PANORAMIC Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Base de données de type ISAM par Excel sous PANORAMIC Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Base de données de type ISAM par Excel sous PANORAMIC Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Base de données de type ISAM par Excel sous PANORAMIC Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Base de données de type ISAM par Excel sous PANORAMIC Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Base de données de type ISAM par Excel sous PANORAMIC Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Base de données de type ISAM par Excel sous PANORAMIC Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Base de données de type ISAM par Excel sous PANORAMIC Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Base de données de type ISAM par Excel sous PANORAMIC Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -20%
Ecran PC GIGABYTE 28″ LED M28U 4K ( IPS, 1 ms, ...
Voir le deal
399 €

 

 Base de données de type ISAM par Excel sous PANORAMIC

Aller en bas 
4 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12294
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMar 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jjn4

jjn4


Nombre de messages : 2703
Date d'inscription : 13/09/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Ouh   Base de données de type ISAM par Excel sous PANORAMIC EmptyMar 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 ?
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Re: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMar 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+
Revenir en haut Aller en bas
Invité
Invité




Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Re: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMar 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.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12294
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMar 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à !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Re: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMar 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 !

Question
Question
Question
Question
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Re: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMar 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
Revenir en haut Aller en bas
Invité
Invité




Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Re: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMar 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.
@+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12294
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMar 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


Nombre de messages : 2386
Date d'inscription : 28/05/2007

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Re: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMar 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.
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


Nombre de messages : 12294
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Vos sources, vos utilitaires à partager :: Base de données   Base de données de type ISAM par Excel sous PANORAMIC EmptyMer 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Re: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMer 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+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12294
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMer 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


Nombre de messages : 2386
Date d'inscription : 28/05/2007

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Re: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMer 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.
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


Nombre de messages : 12294
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyMer 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12294
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyJeu 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$(Cool
if civil$="" then civil$ = "Mr."
caption 30,civil$
return
-----------------------------------------------------------------------------

Bonne soirée à tous Klaus
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Re: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyJeu 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.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12294
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC EmptyVen 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Base de données de type ISAM par Excel sous PANORAMIC Empty
MessageSujet: Re: Base de données de type ISAM par Excel sous PANORAMIC   Base de données de type ISAM par Excel sous PANORAMIC Empty

Revenir en haut Aller en bas
 
Base de données de type ISAM par Excel sous PANORAMIC
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Logithèque : une base de données en Panoramic pour Panoramic
» Une Base de Données Relationnelle (BDR) en Panoramic
» base de données final version
» Mes aventures avec ISAM et Panoramic
» Base de données relationnelle

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: