begin process at 2010 02 10 10:49:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

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

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


 Information sur la source

Note :
Aucune note
Catégorie :Base de Donnees Classé sous :bdd, access, ado, relations Niveau :Initié Date de création :03/10/2005 Date de mise à jour :03/10/2005 17:46:18 Vu / téléchargé :10 819 / 2 579

Auteur : MAURICIO

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (27)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Cette fois j' exploite les relations crées sous Access pour eliminer les registres liés à un registre d' une table "père".
Je montre aussi l' utilisation des requêtes crées sous Access et ses pièges d' utilisation ainsi que les erreurs de ADO (cf. commentaires dans le code).


 Conclusion

J' espère que cette source sera plus explicite que la précédente en ce qui concerne les jointures de tables.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   __ADO Access 3
    • ADO3.cfgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier426 octets
    • ADO3.dofTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 425 octets
    • ADO3.dprTélécharger ce fichier [Réservé aux membres club]Voir ce fichier373 octets
    • ADO3.dskTélécharger ce fichier [Réservé aux membres club]6 759 octets
    • ADO3.resTélécharger ce fichier [Réservé aux membres club]876 octets
    • dm_ado3.ddpTélécharger ce fichier [Réservé aux membres club]51 octets
    • dm_ado3.dfmTélécharger ce fichier [Réservé aux membres club]3 696 octets
    • dm_ado3.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 230 octets
    • exemple3.mdbTélécharger ce fichier [Réservé aux membres club]749 568 octets
    • exemple3.zipTélécharger ce fichier [Réservé aux membres club]46 653 octets
    • f_articles.ddpTélécharger ce fichier [Réservé aux membres club]51 octets
    • f_articles.dfmTélécharger ce fichier [Réservé aux membres club]12 768 octets
    • f_articles.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 193 octets
    • f_clients.ddpTélécharger ce fichier [Réservé aux membres club]51 octets
    • f_clients.dfmTélécharger ce fichier [Réservé aux membres club]12 633 octets
    • f_clients.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 369 octets
    • f_prin.ddpTélécharger ce fichier [Réservé aux membres club]51 octets
    • f_prin.dfmTélécharger ce fichier [Réservé aux membres club]5 103 octets
    • f_prin.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 264 octets

Télécharger le zip


 Historique

03 octobre 2005 17:46:19 :
Petite erreur dans la capture d' ecran ...

 Sources du même auteur

Source avec Zip Source avec une capture DEMO DE MON COMPO TCYWEBBROWSER - VISUALISER DES PAGES HTML ...
Source avec Zip Source avec une capture COMPOS TCYCOMPONENTS V2.6
Source avec Zip Source avec une capture JETTER LES MESSAGES DANS "MESSAGE QUEUE" APRÈS UN LONG CODE
LIBRAIRIE DE FONCTIONS DE GESTION DE SOUS-CHAINES.
Source avec une capture MAILS AVEC INDY10 : QUE FAIRE LORSQUE LE CONTENU AU FORMAT M...

 Sources de la même categorie

Source avec Zip INTERBASE FIREBIRD IBEXPERT par opgiat
Source avec Zip CREE ALIAS AUTOMATIQUEMENT CREATION REPERTOIRE ET TABLE AUSI par opgiat
Source avec Zip CRÉE UN RÉPERTOIRE ET CRÉE CES TABLES PAR PROGRAMME par opgiat
Source avec Zip Source avec une capture CONNEXION MYSQL ET RECUPERATION DANS BASE ACCESS par eli42
Source avec Zip Source avec une capture LIER DEUX TDBGRID par cantador

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture DELPHI CSB (CODE SOURCE BIBLIOTHÈQUE) par Delphinet27
Source avec Zip Source avec une capture EXEMPLE DE LOGICIEL DE BBD ACCESS AVEC ADOCONNECTION par Starnouf
Source avec Zip Source avec une capture PORTRAITS CARACTERISTIQUES SELON HOLLAND par tigris1
Source avec Zip Source avec une capture ACCESS AVEC ADO MASTER/DETAIL+LOOKUPS+CALCFIELDS ETC ... par MAURICIO
Source avec Zip Source avec une capture GESTION DE STOCK D'UNE PHARMACIE par adelpro

Commentaires et avis

Commentaire de MAURICIO le 03/10/2005 17:57:25

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 :)

Commentaire de assemple le 10/10/2005 20:03:48

Camarade MAURICIO
Salut à Toi

Tu fait aussi de la BDD ?

Moi je suis concepteur de SGBD.

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

Signé : DIEGO

Commentaire de MAURICIO le 11/10/2005 10:48:08

Salut,
ça peut m' interesser... tu travailles sur quel SGBD?

Commentaire de assemple le 11/10/2005 14:26:42

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.


Commentaire de MAURICIO le 11/10/2005 15:36:22

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+

Commentaire de assemple le 11/10/2005 19:21:43

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 !)

Commentaire de assemple le 11/10/2005 19:23:58

CORRECTIF :
C'est maintenant à jour : www.assemple.fr/demo/install<U>.exe</U> (fait avec la dernière version de EasyBase),

Commentaire de assemple le 11/10/2005 19:34:42

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 !

Commentaire de MAURICIO le 12/10/2005 11:15:25

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 :)

Commentaire de MAURICIO le 12/10/2005 11:21:02

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!!!).

Commentaire de assemple le 12/10/2005 11:52:51

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) ?



Commentaire de MAURICIO le 12/10/2005 12:03:14

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 ...

Commentaire de assemple le 12/10/2005 12:05:53

C'est toi qui les compare !  ; )

Commentaire de assemple le 12/10/2005 12:09:12

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.

Commentaire de MAURICIO le 12/10/2005 12:20:48

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?

Commentaire de MAURICIO le 12/10/2005 12:23:09

Je te garantie que pour faire un prog. de gestion commerciale (avec SGBD) il faut bien plus d' 1 semaine! Disons des mois!

Commentaire de assemple le 12/10/2005 12:43:16

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 !

; )







Commentaire de assemple le 12/10/2005 12:44:18

L'equivalent de Démo doit être faisable en une semaine ! ?

Commentaire de krassow le 19/07/2006 01:50:57

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.

Commentaire de MAURICIO le 19/07/2006 10:21:04

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+

Commentaire de krassow le 19/07/2006 14:41:58

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…

Commentaire de MAURICIO le 19/07/2006 14:50:36

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...

Commentaire de MAURICIO le 19/07/2006 15:02:53

Je viens de retrouver ma source pour changer l' imprimante par défaut dans Windows:

http://www.delphifr.com/codes/LISTE-CHANGER-IMPRIMANTE-DEFAUT-WIN98-XP_21149.aspx

Voilà

Commentaire de krassow le 20/07/2006 06:00:43

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 ;

Commentaire de krassow le 20/07/2006 13:35:19

(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 ;

Commentaire de MAURICIO le 20/07/2006 14:41:24

Voici la fonction sans utiliser la procedure STRING_PORTION:

function IMPRESSORAS_LISTAR(Destino: TStrings): Integer;
var i: Integer;
    NomImprimante: String;
    szCurrentPrinter: PChar;
begin
  RESULT := -1;
  Destino.Clear;

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

    for i := 0 to Printer.Printers.Count - 1 do
    begin
      NomImprimante := Copy(Printer.Printers[i] + ' on ', 1, Pos(' on ', Printer.Printers[i] + ' on ')-1);
      Destino.Add(NomImprimante);

      If Copy(szCurrentPrinter, 1, Pos(',', szCurrentPrinter)-1) = NomImprimante
      Then RESULT := i;
    end;

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

  End;
end;

Mais ça rien à voir avec cette source, celle dont tu parles es ici avec tout le code que tu as besoin:
http://www.delphifr.com/codes/LISTE-CHANGER-IMPRIMANTE-DEFAUT-WIN98-XP_21149.aspx
A+

Commentaire de krassow le 20/07/2006 19:03:56

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...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Connection a une base access 97 avec ADO [ par jmp77 ] Bonjour,J'essaie désesperement de connecter ma base access 97 à l aide d'un composant ado. Cependant en utilisant le microsoft jet engine 4.0 cela ne ADO + Access [ par davix123 ] Bonjour,je suis en train de développer une appli de gestion de parc informatique. Les données sont stockées dans une base Access. L'affichage de la fe gestion bdd access [ par kaz2004 ] Bonjour, Est il possible de creer un prog gerant une base de données access avec toutes les versions de delphi ou n'est ce possible qu'avec une versio utiliser BDD Access sans ODBC [ par christophedlr ] Bonjour &#224; tous, Je voudrais savoir si y a un moyen avec Delphi 6, d'utiliser une BDD Access sans passer par ODBC ou BDE ? Car en fait, c'est pou Double table dans une bdd access [ par ssd ] BONJOUR A TOUSJe voudrais savoir comment faire pour creer une table de donn&#233;e dans une table accessExemple :table clientnomprenomadressetel&nbsp; ADO et access [ par benalioua1975 ] comment se connecté a une base de donnée ACCESS protegée par un mot de passe via l'objet adomerci d'avance ACCESS AVEC ADO ET JVSTRINGRID [ par jm2mars ] Bonjour à tous, voila j'ai un petit problème pour récupérer les différentes lignes des tables ACCESS !Je m'explique :Tout d'abord j'ai une base de don ADO, DBGrid + Access [ par ultramagnetic ] Bonjour, d&#233;butant Delphi, je peine &#224; faire avancer ma petite appli. J'ai 1 DataModule 1 TADOConnection 5-6 TADOQuery avec - 1requ&#234;te permut lignes bdd access [ par manytime ] Salut &#224; tous.J'ai une stringgrid qui correspond &#224; une table sous Access. Je souhaiterais que quand je permut 2 lignes dans la stringgrid, el access en delphi7 [ par benalioua1975 ] j'utilise une bdd access dans une application reseau et j'utilise l'objet ADO , mais mon soucis et que cette BDD doit etre partagée sur le réseau,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,061 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales