Plein d'infos sur WinDev, WebDev et WinDev Mobile et d'autres choses aussi. N'hésitez pas me laisser des commentaires ou des suggestions.
vendredi, février 07, 2014
WINDEV Mobile 19 : Android/iOS Réplication de données (Réplication Universelle Assistée)
Pourquoi la Réplication Universelle Assistée et pas la programmée ?
Car la Réplication Universelle Assistée permet de faire de la réplication avec un minimum de code (une dizaine de ligne). La plupart de la configuration s'effectue avec des assistants.
Mise en place
J'ai réalisé quelques tests en m'appuyant sur la documentation : http://doc.pcsoft.fr/fr-FR/?1000021071. Les étapes sont bien précisées. Juste quelques commentaires :
1 - Installation du serveur de réplication.
L'aide en ligne sur le sujet est bien faite. Il cohabite très bien avec un Serveur d'application WEBDEV.
Si on utilise une base HFSQL classic, il faut penser à donner les droits à "l'invité internet" sur le répertoire des données (base maître).
Si les droits sont pas défini, un message pas très explicite apparaît sur le terminal du type "impossible d'accéder aux fichiers ....".
A noter également, qu'il n'est pas nécessaire de créer des comptes. Celui par défaut est largement suffisant.
Dans le volet publication, on peut ajouter une publication. Attention : le nom de l'application que l'on donne doit être identique au nom du fichier .wer (sans l'extension)
2 - Définition de la réplication. (ReplicEdit)
Pas de problématique, a part pour les pamaètres. Dans la description d'un fichier de données, onglet "Filtre". Si on souhaite mettre un paramètre, il faut bien dans la combo seléctionner "Nouveau Paramètre" exemple :
Autre chose également, si utilisation d'une base HFSQL classic, ne pas oublier de définir le répertoire de la base maître dans le menu "Réplication...Description de la réplication" onglet "Fichiers maîtres"
Si utilisation d'une base HFSQL client/serveur. Il faut avant même de lancer ReplicEdit avoir une connexion décrit dans l'analyse sinon c'est rapé.
3 - Publication
On peut le faire dans l'administrateur du serveur de réplication ou depuis ReplicEdit. Attention à la fin de l'assistant on propose un code. celui-ci ne contient ni le nom de la réplication, ni le login, ni le mot de passe défini dans l'assistant.
4 - Programmation dans WINDEV Mobile.
tout le code est donner dans l'aide. Attention à réplicSynchro dans le cas d'un replica immédiat, bien définir le deuxième paramètres ReplicaImmédiat. Sinon on a l'impression que ca marche pas.
Conclusion
Le résultat est assez bleuffant. Ajout, modification, suppression (par swipe) depuis une même application avec deux configuration de projet Android et iOS. Un code unique. Pas testé avec WINDEV et WEBDEV mais d'après la doc le code ne change.
Pour les tests j'ai utilisé que quelques fichiers avec 2 ou trois paramètres, on va voir à à l'usage...
par contre si Modification automatique des fichiers de données ou modification du .wer, ben à priori rien de prévu. Je pense qu'il faut refaire un ReplicInitialise après avoir fait un HModifieStructure. Mais bon cette dernière focntion ne me dit pas si la structure à vraiment changer ou pas.
Je sais pas comment vais faire pour l'instant. Mais on va tester....
lundi, septembre 10, 2007
Créer la database sur MySQL avec WinDev, WebDev
Lors de la connexion avec l'accès natif, il faut préciser le nom de la base. Il est donc necessaire d'utiliser PHPMyAdmin ou SQLylog pour créer la base.
Je souhaitais créer par programmation la database puis lancer le script des tables.
La fonction SQLConnecte permet d'effectuer ce traitement si on utilise la connexion ODBC.
Voici le code permettant de créer la database :
id est un entier = SQLConnecte("MysqlODBC","root","mdp","","ODBC ",hODBC)
SI id <> 0 ALORS
sNomDatabase est une chaîne = "Database"
// création de la base de données
sSql est une chaîne = "CREATE DATABASE IF NOT EXISTS %1"
sSql = ChaîneConstruit(ssql,sNomDatabase)
// execution de la requête
SI PAS SQLExec(ssql,"REQ") ALORS
SQLInfoGene()
Erreur("La Database n'a pas pu être créée. Code erreur : " + SQL.Erreur +RC+...
SQL.MesErreur)
FIN
SINON
// La connexion a échoué : affichage d'un message explicatif
SQLInfoGene()
Erreur("La connexion à la source de données" + "localhost" + ...
"a échoué."+RC+...
"Code erreur : " + SQL.Erreur +RC+...
SQL.MesErreur)
FIN
// Dans tous les cas (connexion OK ou pas)
SQLDéconnecte()
Ensuite on peut utiliser les fonctions "H*" avec l'accès natif MySQL.
Un peut contraignant, car il faut le drivers ODBC d'installé sur le poste.
lundi, août 06, 2007
WinDev 11 . Procédures Stockées MySQL 5.x
Vous trouverez l'accès natif à l'adresse suivante :
http://www.pcsoft.fr/st/telec/modules-communs-11/mysql.htm
Soit un fichier client :
Version : Serveur MySQL 5.0.45
- Exemple de procédure stockée avec passage de paramètres :
1 – Création de la procédure stockées sur le serveur
sProc est une chaîne = [
"DROP PROCEDURE IF EXISTS `procstok`.`simpleproc1` ;
CREATE PROCEDURE simpleproc1 (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM client; END;
]
scReq est une Source de Données
// Exécution de la requête
SI PAS HExécuteRequêteSQL(scReq,MaConnexion1,hRequêteSansCorrection,sProc) ALORS
Erreur()
SINON
Info("Procédure stocké créée")
FIN
2 – Exécution de la procédure stockée :
sdReq est une Source de Données
SI PAS HExécuteRequêteSQL(sdReq,MaConnexion1,hRequêteSansCorrection,"call simpleproc1(@a);select @a;" ) ALORS
Erreur()
SINON
Info("Gagné")
// Lecture du résultat de la procédure
HLitPremier(sdReq,hSansRafraîchir)
Trace(sdReq.@a)
FIN
NOTE : la constante hSansRafraîchir permet de ne pas ré-exécuter la requête.
vendredi, août 25, 2006
Comment afficher une image provenant d'un champ Blob MySQL ?
NB : Tests effectués avec la version 60t de WebDev, PHP 4 et MySQL 5.0.24 (et MySQL 5.0.18)
Utilisation exclusives des ordres "H*"
Soit la table MySQL suivante :
CREATE TABLE `blobmysql` (
`IDBlobMysql` int(11) NOT NULL auto_increment,
`Titre` varchar(50) default NULL,
`pImage` longblob,
PRIMARY KEY (`IDBlobMysql`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Dans un page WebDev PHP, ajouter un champ image. Dans le descriptif de celui-ci, définir le type "Dynamique".
Ajouter un bouton et insérer le code suivant :
HLitPremier(BlobMysql)
SI PAS HExtraitMémo(BlobMysql,pImage,"test.gif") ALORS Trace("pas extrait")
IMG_Image2 = "test.gif"
Voilà l'image s'affiche dans le champ image.
PS: Pour ajouter par programmation une image dans un BLOB
CHEMIN_IMAGE est une chaîne = "X:\Mes Sites\warning.gif"
BlobMysql.Titre = "icone warning"
SI PAS HAttacheMémo(BlobMysql,"pImage",CHEMIN_IMAGE,hMémoImg) ALORS
Trace("Erreur ajout")
SINON
HAjoute(BlobMysql)
FIN
Dans une Zone répétée mémoire :
Pour l'afficher dans une Zone répétée mémoire, même principe. Il faut surtout ne pas oublier de mettre le type dynamique dans la description de l'image. Dans le code d'initialisation de la ZR on peut mettre le code suivant :
NomFic est une chaîne
i est un entier = 0
HLitPremier(BlobMysql)
TANTQUE PAS HEnDehors()
i++
Nomfic = "$$Test"+i
HExtraitMémo(BlobMysql,pImage,Nomfic)
ZoneRépétéeAjouteLigne(ZR_BlobMysql,BlobMysql.Titre,nomfic)
HLitSuivant(BlobMysql)
FIN

Dans une Zone répétée Fichier :
Pour l'afficher dans une Zone répétée Fichier. Encore plus simple suivre l'assistant lors de la création de la Zone répétée. Une fois créée modifier le descriptif de l'image de la ZR. Mettre sur le Type : "Depuis une base de données".
lundi, février 20, 2006
Comment Intsaller HyperFile Client/Serveur 10 sous linux Mandriva 2006 ?
Après insertion du DVD, copier les fichiers du Client/serveur dans un dossier sous linux.
Par exemple /home/NomUser/Documents.
Ensuite ouvrir une console. Dans l'explorateur, il y a un menu "Outils..Ouvrir un terminal"
Dans ce terminal il faut taper "su" pui le mot de passe administrateur pour pouvoir faire l'installation.
Ensuite il faut taper la commande :
./manta_install
Suivre les indication de l'assistant.
c'est tout. le serveur est installé en tant que service.
Attention : si vous utiliser le FireWall de Mandriva, il faut ouvrir les ports :
4900/tcp 5002/udp 5002/tcp pour pouvoir utiliser à la fois le centre de controle et le serveur.
mercredi, février 01, 2006
Comment configurer le server MySQL 5.0 pour les clients PhpMyQdmin 2.7.0, MySQlcc ?
(les clients en 4.0 provoque une erreur 1251)
Lorsque l'on veut utiliser des clients tel que PhpMyAdmin ou MySQLcc on peut-être confronté au message d'erreur suivant :
Erreur 1251 "Client does not support authentication protocol requested by server;consider upgrading MySQL client".
Pour pouvoir les utiliser il faut changer le le hasage des mot de passe. Pour plus d'info voir le site de MySQL.
La démarche est décomposée en 3 grandes étapes :
I/Installation du server Mysql 5.0.18
1/ lancement setup.
2/ Choix installation complte
3/ faire suivant aux autres tapes.
Note : laisser le port 3306 par dfaut pour utilisation de l'accs natif MySQL Windev 10
4/ la fin de l'installation lancer la configuration du server
5/ Prendre les infos par défaut et mettre un mot de passe l'utilisateur Root.
II / Installation de MySQL Administrator
1/ la fin de l'install se connecter au server
2/ cliquer sur "Startup Variables"
3/ Dans l'onglet "Security" cocher la case "Use old Passwords"
4/ cliquer sur "Apply"
5/ cliquer sur "User Administration" et cliquer sur "root"
6/ re-saisir le mot de passe et cliquer sur "Apply"
7/ il faudra peut-tre refaire les tapes 5 et 6 avant que le mot de passe soit pris en compte
III/ Configurer PhpMyQdmin 2.7.0
1/ Editer le fichier config.inc.php
2/ mettre : le host et le port
$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname or IP address
$cfg['Servers'][$i]['port'] = '3306'; // MySQL port - leave blank for default port
3/ ensuite le nom utilisateur et mot de passe dfini lors de la configuration du serveur
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = 'monpassword'; // MySQL password (only needed
4/ enregistrer et fermer
Vous pouvez maintenant lancer phpmyAdmin 2.7.0 et mySQlcc 0.9.4