lundi 29 septembre 2008

Gestion de fichiers CSV

'-----------------------------------------
'--- TEST DE GESTION DE FICHIERS .CSV ---
'-----------------------------------------
'--- Une application de DEVIERS Fabien ---
'-----------------------------------------
'--- plus d'Info en bas de la page ---
'--- Le 26/08/2008 à 20h30 ---
'-----------------------------------------

$include "objets\rapidq2.inc"

$typecheck on

DECLARE SUB valide_n° (Sender AS QBUTTON)
DECLARE SUB ferme_vision (Sender AS QBUTTON)
DECLARE SUB raz_grille
DECLARE SUB charge_fichier(sender as qmenuitem)

DECLARE SUB retrouve_nbcols
declare sub modif_ligne

CREATE Form AS QFORM
Caption = "Vision - v.0.1 - "
Width = 603
Height = 497
Center
CREATE Grille_vision AS QSTRINGGRID
Height = 470
Width = 498
Align = 5
separator = ";"
addoptions(7)
Fixedcols = 0
ColCount = 20
Rowcount = 2
create popup as qpopupmenu
create mnu_modif as qmenuitem
Caption = "Modifier"
onclick = modif_ligne
end create
end create
END CREATE
create main_menu as qmainmenu
create mnu_file as qmenuitem
Caption = "Fichier"
create mnu_quit as qmenuitem
Caption = "Quitter"
OnClick = ferme_vision
end create
end create
create mnu_grille as qmenuitem
Caption = "Grille"
' create mnu_charger as qmenuitem
' Caption = "Charger le fichier... "
create mnu_charg_Test as qmenuitem
Caption = "...Test"
tag = 0
onclick = charge_fichier
' onclick = charge_grille_test
end create
create mnu_charg_ovin as qmenuitem
Caption = "...Ovins"
tag = 1
onclick = charge_fichier
' onclick = charge_grille_ovins
end create
create mnu_charg_memos as qmenuitem
Caption = "...Mémos"
tag = 2
onclick = charge_fichier
' onclick = charge_grille_memos
end create
create mnu_charg_agnellages as qmenuitem
Caption = "...Agnellages"
tag = 3
onclick = charge_fichier
' onclick = charge_grille_agnellages
end create
create mnu_charg_luttes as qmenuitem
Caption = "...Luttes"
' onclick = charge_grille_luttes
tag = 4
onclick = charge_fichier
end create
end create
create mnu_G_vider as qmenuitem
Caption = "RAZ de la grille"
visible = false
onclick = raz_grille
end create
' end create
end create
CREATE Panel1 AS QPANEL
Left = 498
Top = 0
Width = 97
Height = 470
BevelOuter = 1
Align = 4
TabOrder = 1
CREATE Button1 AS QBUTTON
Caption = "Valider"
Left = 8
Top = 8
OnClick = valide_n°
END CREATE
CREATE Button2 AS QBUTTON
Caption = "Annuler"
Left = 8
Top = 40
TabOrder = 1
OnClick = ferme_vision
END CREATE
END CREATE
CREATE StatusBar AS QSTATUSBAR
Simplepanel = true
Simpletext = "Nom du fichier : "
END CREATE
END CREATE

dim liste as qstringlist

'affichage de la fenêtre principale....
Form.ShowModal

SUB valide_n° (Sender AS QBUTTON)
showmessage "ligne sélectionnée : " & str$(grille_vision.row)
END SUB

SUB ferme_vision (Sender AS QBUTTON)
form.close
END SUB

SUB raz_grille
dim i as integer
dim j as integer

for i = 0 to grille_vision.rowcount-1
for j = 0 to grille_vision.colcount-1
grille_vision.cell(J,I)=""
next
next
grille_vision.rowcount = 2
END SUB

sub charge_fichier(sender as qmenuitem)
'--- déclaration des varaible interne à la SUB
dim i as integer : i = 0
dim old_posit as integer : old_posit = 0
dim posit as integer : posit = 0
dim nbcols as integer : nbcols = 0
dim chemin as string : chemin = ""

'--- Remise à zéro de la grille
call raz_grille
'--- showmessage "grille vidée"

select case sender.tag
case 0
'showmessage "test"
chemin = "\test.csv"
case 1
'--- showmessage "ovin"
chemin = "\data\ovin.csv"
case 2
'--- showmessage "memo"
chemin = "\data\memo.csv"
case 3
'--- showmessage "agnellages"
chemin = "\data\agnellages.csv"
case 4
'--- showmessage "lutte"
chemin = "\data\mise_lutte.csv"
case else
'--- showmessage "erreur de sélection de fichier"
end select
'--- chargement du fichier en méméoire avec qstringlist
'--- pour déterminer le nombre de ligne que contient le fichier...
'--- showmessage application.path & chemin

'--- charge le fichier en mémoire
liste.loadfromfile(application.path & chemin)

'--- showmessage (liste.item(0)) & chr$(13) '---> Ok

for i=0 to len(liste.item(0))
'--- position = trouve la position du ";" dans liste.item(0) à partir de position
posit = instr(old_posit+1,liste.item(0),";")
'--- retourne zéro si non trouvé
'--- showmessage str$(posit) '---> Ok
if posit > old_posit then
nbcols = nbcols+1
else
'--- showmessage "Fin de la recherche dans la chaine de caractère : " & str$(liste.item(0))
EXIT FOR
end if
old_posit = posit
next

'--- showmessage str$(nbcols)
'--- mise a jour du nombre de colonnes
grille_vision.colcount = nbcols+1

'--- remplissage de la grille_vision
grille_vision.loadfromfile(application.path & chemin,,0,liste.itemcount-1)

'--- libération de la mémoire...
liste.clear
'--- form.caption = "Vision 0.1 - "& chemin
statusbar.Simpletext = "Nom du fichier : " & application.path & chemin
grille_vision.deloptions (10)
mnu_modif.checked = false
end sub


sub modif_ligne
if mnu_modif.checked = true then
grille_vision.deloptions (10)
mnu_modif.checked = false
else
grille_vision.addoptions (10)
mnu_modif.checked = true
end if
end sub

'-------------------
'--- plus d'infos :
'--- ==============
'---
'--- Test pour une application en projet sur la gestion de base de donnée en CSV
'--- Vous trouverez beaucoup de ...SHOWMESSAGE..., en effet, je me sers
'--- de cette fonction très pratique afin de débugger mon application.
'---
'-------------------

Aucun commentaire: