BDD DE LOCATION COMPOS ADO AVEC ACCESS - C' EST PROMIS, C' EST LA DERNIÈRE!

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 - 3 oct. 2005 à 17:57
krassow Messages postés 5 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006 - 20 juil. 2006 à 19:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34075-bdd-de-location-compos-ado-avec-access-c-est-promis-c-est-la-derniere

krassow Messages postés 5 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 19:03
Bien, merci... vous m'avez déjà expliqué lequel la fonction qui l'utilise.
J'ai fait le télécharge de l'URL que vous m'êtes passé au-dessus. Comme vous les il m'avaient déjà dit, il contient la fonction juste qui la flamme, mais pas la fonction STRING_PORTION.
C'est nécessaire pour moi la fonction STRING_PORTION juste, et seulement ce.
La fonction STRING_PORTION pour le que je sais n'est pas dans celui de Delphi.
Au cas où c'est, je le demande avec bonté cela m'envoie le nom de l'unité dans celui qui elle est insérée et la version de Delphi, si 4,5,6,7,8... cela l'utilise.
Bien..., je répéterai la demande de sollicitation du code de la fonction STRING_PORTION:

function STRING_PORTION(szCurrentPrinter, True, ',', False): string;//celle;
{szCurrentPrinter, Vrai, ', ', Faux) je sais que ce n'est pas dans ce chemin qui devrait être écrit.
Pour la grâce, écrivez-moi la fonction entière.}
var //si exister
begin
//?????? - Est-ce que le code est entre qui est inséré commencez et fin de que j'ai besoin, près de la fonction.
end;

Merci pour l'attention reçue et pour le fait d'existence qui répond le mes questions. Comme vous l'il est éprouvé le programmeur, je suppose c'est une fonction qui est dans Delphi. S'il va ceci vraiment, juste passez-vous le nom de l'unité et la version de Delphi.

Respectueusement...
krassow Messages postés 5 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 13:35
(J'ai fait la question manquée, pour cet estu refaisant? ) Débiteur pour m'aider?
Maintenant seulement il manque de toi pour me passer le code suivant :

function STRING_PORTION(szCurrentPrinter, True, ',', False): string;
//(szCurrentPrinter, True, ',', False) il ne sera pas ainsi bien?
var//se à exister
begin
// ?????? - Le code qui est entre begin et end est
//que j'ai besoin.
end ;
krassow Messages postés 5 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 06:00
Débiteur pour m'aider?
Maintenant seulement il manque de toi pour me passer le code suivant :

procedure STRING_PORTION(szCurrentPrinter, True, ',', False)
var//se à exister
begin
// ?????? - Le code qui est entre commencent et extrémité est
//que j'ai besoin.
end ;
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
19 juil. 2006 à 14:50
function IMPRESSORAS_LISTAR(Destino: TStrings): Integer;
var
I: Integer;
ByteCnt : DWORD; //Nb d'octets à réserver pour récupérer le tableau de structures
StructCnt: DWORD; //Nb de structures récupérees = nb imprimantes
p : pointer; //pointe sur le tableau de structures retourné par EnumPrinters
PrinterInfo: PPrinterInfo2; //Pointeur de structures de type _Printer_Info_2
szCurrentPrinter: PChar;
begin
RESULT := -1;
Destino.Clear;
//initialisation des paramètres
ByteCnt := 0;
StructCnt := 0;
PrinterInfo:=nil;
p:=nil;

GetMem(szCurrentPrinter,SizeOf(Char) * 256); // Reserver espace memoire ...
GetProfileString('Windows', 'DEVICE', '', szCurrentPrinter, 254); // Nome+Info de l' imprimante actuelle ...

//Cette fonction retourne un pointeur sur les structures des imprimantes
//Le While permet d'effectuer une réservation suffisante pour le tableau de structures
While not EnumPrinters(PRINTER_ENUM_LOCAL, nil, 2, p, ByteCnt, ByteCnt,StructCnt) Do
If (GetLastError = ERROR_INSUFFICIENT_BUFFER)
Then p := AllocMem(ByteCnt);

//Maintenant il ne reste plus qu'à lire le contenu des structures du tableau
For I:=0 To StructCnt-1 Do //On lit chaques structures propre à chaque imprimante
Begin
//On se déplace dans le tableau de structures
PrinterInfo := PPrinterInfo2(LongInt(P)+I*sizeof(_Printer_Info_2));
Destino.add(PrinterInfo.pPrinterName);

If PrinterInfo.pPrinterName = STRING_PORTION(szCurrentPrinter, True, ',', False)
Then RESULT := i;
// Memo1.lines.add(#9+'Port -> '+PrinterInfo.pPortName);
// Memo1.lines.add(#9+'Pilote -> '+PrinterInfo.pDriverName);
// Memo1.lines.add(#9+'Commentaire -> '+PrinterInfo.pComment);
End;

FreeMem(szCurrentPrinter, SizeOf(Char) * 256) ; // Libérer espace mémoire ...
end;





STRING_PORTION(szCurrentPrinter, True, ',', False)
Renvoie le nom de l' imprimante en récupérant tous les caractères jusqu' à rencontrer une virgule...
krassow Messages postés 5 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
19 juil. 2006 à 14:41
Débiteur pour avoir répondu? E combien de procédé STRING_PORTION (au szCurrentPrinter, vrai, « , », falsifie) ; Vous il pourriez le décrire ? Il pardonne si je ne comprenais pas bien?
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
19 juil. 2006 à 10:21
Salut Krawsson,
la procedure Impressora_Config(FormParent_Handle: Integer) n' est pas dans cette source même si elle est bien de moi!

Retrouve la source oú j' ai utilisé cette procedure, le code y est dedans...
A+
krassow Messages postés 5 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
19 juil. 2006 à 01:50
Mauricio... Vous pourriez écrire en cette page le code complet. procedure Impressora_Config(FormParent_Handle: Integer); - et, pour faire ceci, nécessaire de la description de la fonction: STRING_PORTION(szCurrentPrinter, True, ',', False); - et la valeur de FormParent_Handle: e quant à l'obtiennent. Je suis reconnaissant anticipatedly.
assemple Messages postés 65 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 16 décembre 2011
12 oct. 2005 à 12:44
L'equivalent de Démo doit être faisable en une semaine ! ?
assemple Messages postés 65 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 16 décembre 2011
12 oct. 2005 à 12:43
Ma comparaison est juste aussi.
Dans FreeFact (fait en 2 heures)dont je t'ai donné un lien tu peux voir la gestion Multi-Société (3 minutes aussi).

En effet j'ai développé mon propre moteur de base de données.
C'est un peu compliqué mais tu sais que rien n'est impossible et quand on est motivé on soulève des montagnes.

J'utilise dans mon EasyBase Engine les fonctions windows :
CreateFile
FileRead
WriteFile
SetFilePointer
GetFileSize
LockFile
UnLockFile

Pour les index j'ai crée les fonctions

VerrouilleLesIndex
DeverrouilleLesIndex
TChamp.ChercheEntree(Fiche,PremiereEntree,EntreeSuivante)
ExisteEntree
InsereEntree
IndexLibres
InsereLesIndex
EffaceLesIndex

Mais le moteur en soit, même ça a été un gros boulot, mais ça n'a rien d'innovant.

Mais pour pouvoir créer EasyBase, il fallait que je me crée un moteur.

L'innovation c'est le Modèle de Base de Données.
Comme je l'ai dit, j'ai commencé une version Client/Serveur basé sur MySQL, dans le but d'avoir les données hébergées par un FAI, et le client sur un poste mobile ou fixe.
EasyBase exploiterais un autre moteur de base de données, mais toujours le même modèle.
Petit détail de ce modèle : c'est l'application qui crée les tables, vérifie qu'elles sont conforme à ce à quoi elle s'attend. Si les tables n'ont pas la bonne structure, l'application ordonne la restructuration.
EasyBase Version MySQL génère un EXE, dont les paramètres internets (herbergeur - mot de passe) sont définis par le concepteur (en fixe) ou modifiable.
Ces paramètre peuvent désigner un espace FTP (comme les 100 Mo offert par Free) totalement vide (Il faut que les 100 mo et la Base MySQL soient activés (et non créée) ). L'exe s'occupe de tout. Si tout est vide, il y copie les 2 fichiers PHP qui servent d'interpréteurs de requête, et ordonne la créations des tables, selon une structure inscrite en dur dans l'EXE.
La plupart des applications de SGBD délègue la structure des tables aux tables ! Absurde !
C'est le programme EXE qui commande, et le SGBD qui obéit !

; )
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
12 oct. 2005 à 12:23
Je te garantie que pour faire un prog. de gestion commerciale (avec SGBD) il faut bien plus d' 1 semaine! Disons des mois!
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
12 oct. 2005 à 12:20
Ok, mais je fais une comparaison juste.
Pour faire la comparaison que tu fais je dois faire:
lancer le programme d' installation de mon prog.
Remplir les infos de l' entreprise/monnaie etc ...
Temps écoulé: 3 minutes!
Ne le prends pas mal, c' est un fait c' est tout!
Ce qui me plaie ds ton prog. c' est le fait que tu as développer ton propre sys. de gestion des tables! Comment as tu fais?
assemple Messages postés 65 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 16 décembre 2011
12 oct. 2005 à 12:09
Mais je sais qu'avec un SGBD classique c'est temps qu'il faut.
Pour faire demo il faut plus d'une semaine soit 2400 minutes (à 35h / semaine ;) )soit 1200 fois plus qu'avec EasyBase.

Ce coéficient diminue bien sûr pour des projets plus complexes.
assemple Messages postés 65 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 16 décembre 2011
12 oct. 2005 à 12:05
C'est toi qui les compare ! ; )
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
12 oct. 2005 à 12:03
Il faudrait que j' essaye de créer un cas précis pour tester ton appli avec plus de profondeur ...
Oui ça m' a mis 1 an! et toi? combien de temps pour avoir créer ce système? parce que tu compares 2 choses pas comparables en disant que ça aurait pris 2 heures...
D' ailleurs, mon programme peux s' appliquer à tout commerce comme le tiens alors ...
assemple Messages postés 65 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 16 décembre 2011
12 oct. 2005 à 11:52
Je confirme que les insufisances que tu soupsonne sont fausses.
En option une application easybase peut avoir les propriétés suivantes :
Multi-utilisateurs : Oui/Non
Multi-Sociétés : Oui/Non
Multi-Dossier : Aucun/Dossier/Projet/Exercice/Année

Tu mélange un peut l'application que tu as développée pour ton employeur, et ce qu'est normalement une applications de Base de Données.
Bien qu'avec EasyBase je puisse développer des applications Multi-Utilisateurs et Multi-Société et Multi-Dossier/Exercice, la plupart des applications que j'ai développées n'utilisent pas ces options.
Quand au code barre, il sont parfaitement intégrables à toutes mes applications quelles qu'elles soient, puisque l'appel d'un fichier tiers se fait par la frappe d'un code ou d'une référence et l'appuie sur <Entrée>, ce que simule le lecteur de code barre.
De plus toutes les application EasyBase permettent l'impression d'un code barre. Tu peux vérifier ces 2 points avec Démo (Two Minutes Maid)
Quand à la gestion des "Sous référence", elle est parfaitement faisable avec EasyBase. J'ai installé un gestionnaire de caisse et de stock pour une Coiffeuse fait avec EasyBase cette semaine : EasyCoif © Assemple. EasyCoif gère, entre autre, les sous réfrénce couleurs des colorants et régés (sorte de colorants).
Les fournitures contiennent un tableau contenant la liste des couleurs et quantités en stock, automatiquement décrémenté lorsque celle-ci est insérée dans le ticket.

Tout ça t'as pris un an !
Avec EasyBase, tu l'aurais fait en quelques heures.
As-tu testé démo (le bon) ?
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
12 oct. 2005 à 11:21
J' ai oublié de dire que j' avais déjà une grande expérience des appli multi-utilisateurs. Ce qui veut dire que je connaissait déjà tous les pièges de programmation de ce genre de programme (et il y en a!!!).
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
12 oct. 2005 à 11:15
Salut Assemple,
si j' ai fait cette fonction, c' est parce que TPrinterDialogSetup ne change pas la config de l' imprimante! D' ailleurs, cela n' a jamais été son objectif !!!
Je m' explique: est-ce que OpenPictureDialog1 ouvre une image? non! En fait, ces boites te permettent une selection/parametrisation que tu dois ensuite traiter dans ton programme.
Mon programme n' est qu' en Portugais et il n' y a pas de version demo. En fait, la page internet n' existe que pour montrer mon appli à mes amis. Le programme étant la propriété intelectuelle de mon employeur qui ne désire pas pour le moment vendre cette appli. Il s' en sert pour la vente dans ses magasins. Il fonctionne avec des tables DBase que je trouve très aproprié pour ce type de programme.
Ton problème de curseur est facile à résoudre normalement: le locktype du Cursor doit être en Pessimistic. Ce qui oblige (du moins, avec les compos ADO) le cursor à être du côté serveur.
En ce qui concerne ton appli, tu devrais vite penser à créer un fichier entreprise/exercice. Cela te permettra à la fin de l' année de créer un nouvel exercice ds un nouveau repertoire et ainsi "figer" les données de l' année anterieure...
Avec une Wizard lors de la 1ere execution, tu pourras demander où l' utilisateur désire avoir la BDD et de remplir une fiche avec les données de l' entreprise ainsi que d' autres trucs qui pourront être utile.
Je trouve que tu as fait un bo boulot même si d' après mon experience ds le domaine, les utilisateurs se retrouveront vite coincé par ton appli. C' est le prix à payer pour la simplicité malheureusement ... Par exemple, ds mon appli, chaque article a un code barre (pour la vente). Pour chaque couleur et taille (ds la cas de vêtements) de l' article on a un stock/prix/desription/code barre etc ... mais on a une fiche qui montre le stock global etc ... L' avantage est de pouvoir créer très vite les codes barres pour une nouvelle couleur sous toutes les tailles (S,M,L etc ...) en 5 secondes!
J' avais oublié de dire que mon appli permet aux utilisateurs de créer de nouveaux documents avec ses règles de gestion.
Un magasin pourra avoir plus d' un PC, pouvant avoir une numération des documents indépendante des autres postes.
Bref, y a du boulot! Ça m' a mis presque 1 an sachant qu' il a évolué pas mal les 6 1ers mois. Mais je suis sur que tu t' en es déjà rendu compte :)
assemple Messages postés 65 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 16 décembre 2011
11 oct. 2005 à 19:34
Commentaire supplémentaire sur Démo, facturation de démonstration d'EasyBase.
Démo n'est pas exploitrable tel quel, il y manque trop de chose.
Mais tu remarqueras que les articles (à vendre) sont dotés d'une photo, est qu'un lien dynamique sur la photo d'un article facturé est copié dans la facture.
Comme c'est un lien dynamique (que j'appelle vue), les photos des articles (fichier JPG) ne sont pas dupliquées à chaque facturation.
Ces photos peuvent ainsi être imprimées avec la facture. C'est très rarement utile, mais dans le cas d'un antiquaire, qui vent des articles uniques, souvent de valeur, c'est presque indispensable. En cas de vol, le client peut présenter à la police la facture, avec la photo du ou des objets disparus.
Démo, je le répète est fait en 2 minutes !
assemple Messages postés 65 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 16 décembre 2011
11 oct. 2005 à 19:23
CORRECTIF :
C'est maintenant à jour : www.assemple.fr/demo/install.exe (fait avec la dernière version de EasyBase),
assemple Messages postés 65 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 16 décembre 2011
11 oct. 2005 à 19:21
Pour Config d'impression, tu me confirme donc que l'execution d'un TPrinterDialogSetup ne modifie pas les paramètres d'une imprimante ! (CONFIRME LE STP)

Non, les liens sont justes, sauf que pour démo j'ai oublié de le "FTPCopier". C'est maintenant à jour : www.assemple.fr/demo/install (fait avec la dernière version de EasyBase), FreeFact doit avoir quelques semaines, et EasyBase bouge vite, très vite.

Tu dis : Points faibles: fonctionnement de plusieurs utilisateurs avec tout ce que cela implique, trop simple et donc vite fait on se sent limité.
Non, car, en option, les applications EasyBase peuvent être Multi-Utilisateur. Voir démo version multi-utilisateurs créée en 2 seconde à partir de démo normal(www.assemple.fr/demoMU/install.exe). Mot de passe Administrateur : seguret.
Nota : j'ai très peu de clients qui ont besoin de cette option, qui est propre aux grosses boîtes. Mais c'est vrai qu'avant EasyBase le sur mesure était limité aux Grosses Boites.
Grâce à EasyBase je propose de sur mesure à partir de 250 euros, mais ça avoisinne plutôt les 600-1000 euros, pour monter à 12 000 euros pour des grosses boîtes.

Nota : Toutes les applications EasyBase fonctionnent en réseau avec un verrouillage au niveau de l'enregistrement.

Ton logiciel est-il uniquement en portugais ? Peut-on le télécharger ?

Ma facturation phare s'appelle EasyFact © Assemple (www.assemple.fr/easyfact/install.exe)

J'ai commencé une version localisable (traduction en autre langue) mais c'est pas au point : j'ai sous estimé la tâche !

En option la fenêtre de choix "standard" peut être remplacée par une fenêtre de choix "tactile"

J'ai commencé une version Client/serveur.
La base donnée sera une base de données MySQL chez un hebergeur comme Free. Sur FTPPerso, 2 fichiers PHP chargé d'interpréter toutes les commandes envoyées par l'application cliente.
Mais je crois MYSQL ne sait pas verrouiller un enregistrement.

FIN (enfin ! quel Bavard ce Diégo !)
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
11 oct. 2005 à 15:36
Voilà une fonction pour ce qui est de la config. de l' imprimante:

procedure Impressora_Config(FormParent_Handle: Integer);
var szCurrentPrinter: PChar;
Impressora: String;
HPrt : Cardinal;
begin
GetMem(szCurrentPrinter,SizeOf(Char) * 256); // Reserver espace memoire ...
GetProfileString('Windows', 'DEVICE', '', szCurrentPrinter, 254); // Nome+Info de l' imprimante actuelle ...

Impressora := STRING_PORTION(szCurrentPrinter, True, ',', False);
FreeMem(szCurrentPrinter, SizeOf(Char) * 256) ; // Libérer espace mémoire ...

OpenPrinter(PChar(Impressora), HPrt, Nil); // Handle da impressora
PrinterProperties(FormParent_Handle, HPrt); // Mostrar janela de config
end;

J' ai essayé rapidement les 2 programmes (tes links sont pas bons).
La 1ere impression qui s' en dégage est que tu abuses sur les dégradés. Serieusement, c' est pas mauvais.
Points forts: facilité d' installation/désinstallation, accessible, parametrisable.
Points faibles: fonctionnement de plusieurs utilisateurs avec tout ce que cela implique, trop simple et donc vite fait on se sent limité.

Voici mon programme de gestion commerciale (pas de download, juste des printscreens qui datent de plus d' un an):
http://cindypos.planetaclix.pt/
Comme tu peux le voir, il est très convivial et possède même un module pour utilisateur de balcon.
Il permet:
-fonctionnement en réseau/plusieurs utilisateurs.
-Gérer plusieurs magasins (ventes/stocks/sys. de picage de carton directement sur PC).
-Module du balcon entierement parametrisable, celui-ci fonctionnant avec la souris ou/et clavier ou/et écran tactile.
-impressions sous A4/imprimantes POS.
-configuration des impressions des documents.
-automatisation des soldes.
-impression des etiquetes avec le prix etc ...
-gestion des droits des utilisateurs.
-automatisation des backups.
et j' en oublie!

En conclusion, ton appli est bonne mais elle est dépassée par les logiciels actuels.
Par contre, le côté "j' en fait ce que je veux" est pas mal, même si les logiciels actuels s' y se sont mis aussi (le miens inclus). Bravo en tout cas pour cet énorme travail, tu peux me croire, je sais le boulot qu' il y a derrière une telle application. A+
assemple Messages postés 65 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 16 décembre 2011
11 oct. 2005 à 14:26
Je travaille avec Delphi 7 et un package basé sur un nouveau modèle de base de donnée de mon invention : EasyBase. Ce nouveau modèle encapsule le modèle classique relationnel avec de nouvelles entités.
La fenêtre de fiche, les composants champs (typés : Booléen, date, entier, réél, chaîne, liste (255 items au max), les composants champs "externe" (nom d'un fichier "document" : texte, RTF, WAV, JPG, DOc, XLS...). Le conteneur de champs Tableau, dans lequel tout champ (normal ou externe) est automatiquement disposé en colonne, permet de créer une table fille liée en quelques secondes. Un PageControl classique peut être un conteneur de champ, permet soit une répartion par thème des champs, trés utile dans le cas de fichier riche en champs, soit une "polymorphie" pilotée par un champ liste (type, catégorie, famille...).

Outre ces composants, Easybase pour Delphi contient 2 experts qui ajoutent dans le menu Aide de Delphi 2 entrées de menu :
- Nouvelle application Easybase
- Nouvelle Fiche EasyBase (pour ajouter à l'application EasyBase un fichier de données)
Dans la Fiche EasyBase on dépose les champs voulus.
A l'execution, le menu principal est créé comme suit :
- Traitements divers : Sauvegarde, Option (édition de appli.ini), Configuration de l'impression (PrinterSetupDialog : qui ne marche pas d'ailleurs ???), Style du Menu (modifier l'apparence du menu), les modules ajoutés dans la fenêtre "MainAppli", et Quiter (pour fermer l'application)
- Pour chacun des fichiers de données : "Les Fiches" : Saisie, Modification, Duplication (saisie en partant d'une fiche existante), Effacement, Listage (édition d'une liste totale ou partielle totalement paramétrable et avec aperçu avant impression), Impression Unique (imprimer une fiche choisie, aperçu avant impression, paramétrable en WYSIWYG), Imprimer plusieurs (imprimer tout où partie, par critère), les modules ajoutés dans la fiche.
- Aide ? : Table des Matières, Présentation de Appli © Assemple, A propos de Appli © Assemple

Nota : parmi les composants EasyBase, le composant Module. C'est un composant non visuel qui permet d'ajouter des entrées de menus au menu standard d'EasyBase. Il faut créer le gestionnaire d'évement OnExecute pour rédiger l'action qui sera executée si l'utilisateur clique sur l'item.
Nota 2 : les fichiers d'aides sont au format HTML et sont créés au premier lancement de l'application. Il sont illustrés de copies d'écran, elles aussi générés au lancement de l'application (dès qu'un fichier contient plus de 10 fiches).

J'ai crée aussi une petite application, PCreateInstall, qui affiche la liste des application EasyBase dans une boite liste, et qui me permet de créer en une seule passe un programme d'installation : compilation de l'application, concatenation des fichiers et compression, création et compilation d'une ressource contenant les fichiers compressés, création de Install.dpr et compilation, copie optionnelle de install.exe sur un support amovible (au début install.exe tenait sur une disquette 1.44Mo), copy optionnelle de install.exe sur mon site via FTP.
A l'execution, Install.exe reconnait s'il s'agit d'une 1° installation (on copie tous les fichiers) ou d'une mise à jour (on ne copie que Appli.exe).
Install affiche successivement 2 boite de messages :
- Install.exe va installer (ou mettre à jour) Appli © Assemple. Voulez-vous installer (ou mettre à jour) Appli © Assemple ? [OUI][NON]
- Install.exe a installé (ou mis à jour) Appli © Assemple. Voulez-vous lancer Appli © Assemple tout de suite ? [OUI][NON]

Avec EasyBase je développe une facturation (sommaire néanmoins, pour faire une démo des possibilités d'EasyBase) en 2 mn chrono !
Avant je disais 10 mn, mais un jour pour tester des modification que j'avais apportées à EasyBase, j'ai créé, pour la ennième fois cette facturation de demonstration (Article : Reférence, Désignation, Prix - Client : Nom, adresse, Ville - Facture : Numéro, date , Client, tableau détail contenant article, quantité et montant, total). J'ai foncé, et j'ai mis 2 minutes !
Bon, je savais par coeur c'qu'il y avait à faire.

La facturation faite en 2 minutes : www.assemple.fr/demo/install.exe

Une facturation faite en une heure : www.assemple.fr/freefact/install.exe

Cette dernière a été téléchargées des milliers de fois, et j'estime à 300 le nombre d'entreprise l'utilisant dans le monde.


Voilà, en résumé ce qu'est EasyBase.

Je cherche à commercialiser mon invention, mais je ne sais pas comment m'y prendre, d'autant que ça fait plus de 5 ans que cherche des partenaires. J'ai envisagé de le diffuser en open source. J'hésite.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
11 oct. 2005 à 10:48
Salut,
ça peut m' interesser... tu travailles sur quel SGBD?
assemple Messages postés 65 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 16 décembre 2011
10 oct. 2005 à 20:03
Camarade MAURICIO
Salut à Toi

Tu fait aussi de la BDD ?

Moi je suis concepteur de SGBD.

Ca t'interresse ?
(on se tutoie ... ?)

Signé : DIEGO
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
3 oct. 2005 à 17:57
Juste un petit mot sur les erreurs de curseur de ADO avec le fournisseur OLE JET. Comme malheureusement vous pouvez le voir sur cette source, 2 curseurs sur la même table (tbclients et tbclients2) peuvent générer des erreurs de curseurs lors de l' élimination d' enregistrements alors que ces erreurs n' existaient pas sous BDE. De même pour la table tbQDehors qui est basée sur une requête et donc, pointe sur les enregistrements de la table "client" et "article".
Même le refresh nous donne une zolie erreur de m...

procedure TfrmClients.SBDeleteClick(Sender: TObject);
begin
// *** ATTENTION *** //
// En eliminant un client, le système (cf. relations sous access) élimine les registres de locations
// Pour éviter une grosse erreur de positionnement de tbQDehors (curseur côté client ou pas), on ferme
// la table "requête". De même pour tbClients2 ...
DM3.tbQDehors.Active := false;

Try
DM3.tbClients.Delete;
Except
ShowMessage('Record locked !');
End;

try
DM3.tbClients2.Refresh;
except
// Si DM3.tbClients2 était sur le même client, la commende refresh provoque une erreur ...
DM3.tbClients2.Active := false;
DM3.tbClients2.Active := true;
end;

DM3.tbQDehors.Active := true;
end;

Tout ça pour dire que le BDE est peut être mort mais pas encore enterré. La prochaine fois, j' attaque Interbase ou plutôt Firebird car il est gratuit. Je montrerai cette fois l' utilisation du code SQL (je ne l' ai pas fait sous ADO car ADO n' est pas une priorité pour moi). En espérant que ces erreurs n' appartiennent qu' à ADO. En tout cas moi, entre ADO/DBXPRESS/Interbase, j' ai déjà fait mon choix, vive l' oiseau de feu :)