Le 05/04/2018, Miloslav a supposé :
Bonsoir,
D'abord, merci pour ta réponse qui au moins offre quelque sens pour moi.
Je n'ai rien au contraire, contre l'écriture d'un programme, puisque j'ai
écrit en Delphi la maquette d'un programme qui lit bien ligne par ligne une
feuille Excel, et effectue bien la simulation souhaitée d'un examen depuis
les données de cette feuille (et accessoirement d'un champ dont on déduit le
chemin où trouver l'image PNG de la question à poser). J'utilise pour ça
l'excellent composant TMS Flexcel qui permet à peu près n'importe quoi sur
une feuille Excel.
Accessoirement, le programme actuel de simulation d'examen a été écrit en
Webdev, mais est protégé, son auteur est décédé, et seule la partie
permettant l'ajout d'une question ou l'export vers Excel est permise. Dommage
évidemment, l'auteur a souhaité que son programme n'évolue plus après lui et
on peut le comprendre.
Le seul objectif pour moi de Webdev est de réécrire ce programme mais de
façon à ce qu'il s'exécute sur un site, et permette donc à plusieurs usagers
de faire indépendamment cette simulation d'un examen.
Tu comprendras donc que je n'ai besoin en fait que d'une seule table, dont un
champ permet de déduire l'adresse de l'image de la question (en PNG), et un
autre champ qui lui est souvent long, contient l'explication relative aux
réponses à afficher à la demande dans une fenêtre fille.
Le Webdev d'origine avait d'autres fichiers dans sa base, comme les noms,
notes avec bonnes réponses et erreurs des candidats, etc.. mais c'est un peu
superflu pour l'instant si on ne souhaite que de faire migrer vers un site
Web.
A terme on pourrait rajouter des options intéressantes pour un club comme
l'envoi de mails, un forum ou blog, etc.. mais ça ne presse pas.
Je regrette plutôt que les manuels et exemples se réfèrent à des fichiers
multiples dont je n'ai pas l'usage dans ce cas précis.
J'aurais bien sûr préféré un document sur le Wlangage permettant de réaliser
ligne après ligne ce que tu décris.
Accessoirement, l'examen simulé contient 20 questions dont 2 de chacune de 10
familles. Le plus simple pour permettre une pseudo-randomisation me semble
être est de créer un champ CRC32 depuis le libellé en texte de la question
(et j'ai vu que le Wlangage permet d'obtenir directement un CRC32), puis de
filtrer ou faire un index composite, entre familles en 1er lieu, CRC32 en
second, et index de ligne en dernier pour éviter d'hypothétiques collisions.
Merci encore pour ta réponse. J'en déduis que je dois créer une base HFSQL
vide de structure voisine de la feuille Excel, chercher dans la doc en ligne
comment lire une cellule Excel 2016 et remplir rang par rang et dans chacune
colonne par colonne ou du moins champ correspondant par champ correspondant,
pour obtenir la "base" si on peut dire pour une table unique, de mon fichier
HFSQL.
Accessoirement mais pas vraiment, permettre l'opération inverse d'export vers
une feuille Excel, pour ne pas rester dépendant de l'avenir de HFSQL et
permettre à l'usager maître d'ajouter, modifier, retirer des questions dans
Excel et pas seulement dans HFSQL.
Merci encore de ta réponse très bienvenue puisque productive pour moi, et
très cordialement,
Milos
Salut Milos
je vais te poster quelques exemples de code pour exploiter un fichier
excel. Ce sera par rapport à du mysql, mais tu pourrras le transposer.
(j'espère dans la journée)
Tu l'as dit : rester maitre ...
je me suis toujours méfié des instructions boites noires. Dès que cela
coince, qu'un cas n'est pas géré, on se retrouve obligé de tout
redévelopper.
Après il y a des trucs tout simples pour importer de l'excel. Comme je
l'ai dit des intégrations excel j'en ai plusieurs par jour, avec des
clients incapables de respecter des structures attendues. Du coup (pour
les petits fichiers) j'en arrive à utiliser ce système très simple.
un champs de saisie multiligne ou l'on copie colle les colonnes de
l'excel. Une table memoire (table3 ci dessous) où j'ai mes champs et un
petit code
TableSupprimeTout(Table3)
POUR TOUTE CHAÎNE wlig DE content SEPAREE PAR RC
TableAjoute(Table3,wlig)
FIN
(sachant que lecopier coller des colonnes excel est séparé par des TAB,
cela rentre directement dans une table memoire dont les colonnes sont
dans le même ordre)
l'utilisateur verifie dans sa table affichée que c'est bien l'attendu,
ensuite je me génère un insert bulk en relisant ma table
DemarreBouton(MoiMême..Libellé)
cmd est une chaîne
nbrows est un entier
cmd ="insert into referentiel_famille_speeder values "
ExecSQLCde("truncate table referentiel_famille_speeder")
POUR TOUTE LIGNE DE Table3
cmd+="("
cmd+=QuoteV(Table3.hierarchie)
cmd+=QuoteV(Table3.index)
cmd+=QuoteV(Table3.segm)
cmd+=QuoteV(Table3.cren)
cmd+=QuoteV(Table3.fam)
cmd+=Quote(Table3.libelle)+"),"
FIN
cmd=TronqueDernierCaractere(cmd)
nbrows=ExecInsertAndReturnAffectedRows(cmd)
EcritLog(nbrows+" lignes intégrées dans le référentiel famille")
TermineBouton(MoiMême..Libellé)
Cet exemple d'intégration que j'ai réalisé en WD19 en 20 minutes hier,
doc utilisateur comprise.
et en webdev ce genre de système est possible aussi.
Et mes utilisateurs aiment bien ce principe du copier coller en fait.
Bon promis je t'envoie des codes à partir de fichiers.
---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com