begin process at 2012 02 11 08:55:27
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Composants

 > COMPOSANTS ADO DE CONNEXION AVEC PRIVILEGES D'ACCÉES AVEC L'AIDE

COMPOSANTS ADO DE CONNEXION AVEC PRIVILEGES D'ACCÉES AVEC L'AIDE


 Information sur la source

Note :
Aucune note
Catégorie :Composants Classé sous :Composant, database, ado, connexion, privilèges Niveau :Expert Date de création :16/09/2008 Date de mise à jour :22/09/2010 10:27:34 Vu / téléchargé :5 833 / 826

Auteur : pascal1541

Ecrire un message privé
Site perso
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
1. TMyDataSet:

Ce composant est un composant AdoDataSet un peut modifié, car son état est fixé suivant le privilège affecté au user connecté:
Close si la propriété Lire=false.
Readonly si  la propriété Modif=false.
Insert et append ne fonctionne pas si  la propriété Ajout=false.
Delete ne fonctionne pas si  la propriété Supprim=false.

Ce composant contient les mêmes propriétés de AdoDataSet sauf  TabelName qui indique le nom de la table principale sais la composant est une requête SQL.
La méthode "Open" contient comme paramètre l'identifiant d'utilisateur connetcté "TMyDataSet.Open(Id_User)".


Les propriétés sont fixé dans la table "Privilège" dans la base de donnée suivant la catégorie d'utilisateur connecté depuis la table "ClasseHumain".

2. TMyConnect:

Composant utilisé pour identifier l'utilisateur qui va connecter pour récupérer sont ID_HUMAIN depuis la table Humain dans la base de donnée.
La méthode Execute est appelée pour afficher la fenêtre de connexion.

• AdoConnection: Contient le nom de composant connexion.
• DefaultlLanguage: Langue de la fenêtre de connexion.
• Id_User: Identifant d'utilisateur connecté.


N.B:
Vous pouvez toujours personnaliser votre fenêtre de connexion
3. TExtDBUserInfo:



Composant visuel pour afficher des informations sur la donnée actuelle dans la table TMyDataSet spécifiée, tel que:
• Date de création de la donnée
• Utilisateur qui a créé la donnée
• Date de modification de la donnée
• Utilisateur qui a modifié la donnée
• Etat de la donnée

Pour cela il faux fixer les propriétés:
• Connection: Nom de composant connexion ADO.
• DataSet: Nom de composant TMyDataSet.



4. La base de données:

Chaque base de données utilise ces composants doit avoir les tables principales suivantes:
• Humain: Liste des utilisateurs de programme.
• ClasseHumain: Catégorie d'utilisateurs.
• Privilege: Privilèges de chaque table de la base de données par catégorie utilisateur.
• Etat: Table des états possibles pour les données de programme.
Voire (ExtADO.mdb).


E-Mail: contact@djil-info.com , site web: http://www.djil-info.com

Source

  • unit MyDataSet;
  • interface
  • uses
  • SysUtils, Classes, DB, ADODB, Dialogs, Windows, Messages, Variants,Controls, DBConsts;
  • type
  • TExtMyDataSource = class;
  • TMyDataSet = class;
  • TExtMyDataSource = class (TDataSource)
  • private
  • //FDataSet:TMyDataSet;
  • { Déclarations privées }
  • protected
  • // procedure UpdateState;
  • //procedure SetDataSet(AdataSet:TMyDataSet);
  • { Déclarations protégées }
  • public
  • { Déclarations publiques }
  • published
  • //property DataSet:TMyDataSet read FDataSet Write SetDataSet;
  • { Déclarations publiées }
  • end;
  • TMyDataSet = class(TADODataSet)
  • private
  • { Déclarations privées }
  • protected
  • { Déclarations protégées }
  • public
  • Id_User:integer;
  • aTableName:string;
  • Lire,Ajout,Modif,Supprim,Herite:boolean;
  • procedure Open(IdUser:integer);
  • procedure Insert; //Ajouter un champ
  • procedure Append;
  • procedure Edit; //Modifier le champ
  • procedure post;
  • procedure Delete(confirm:boolean); //Supprime le champ
  • procedure saveState(Sender:TDataSet);
  • { Déclarations publiques }
  • published
  • property TableName:string read aTableName write aTableName;
  • { Déclarations publiées }
  • end;
  • procedure Register;
  • implementation
  • procedure TMyDataSet.Open(IdUser:integer);
  • var THumain1,TClasseHumain1,TPrivilege1:TADODataSet;
  • begin
  • if(self.CommandType=cmdTable) and (Self.TableName='')then self.TableName:=Self.CommandText
  • else
  • if(Self.TableName='')then
  • Self.TableName:=Self.Name;
  • THumain1:=TADODataSet.Create(self);
  • //THumain1.ConnectionString:= self.ConnectionString;
  • THumain1.Connection:= self.Connection;
  • THumain1.CommandType:=cmdText;
  • THumain1.CommandText:='Select * from Humain';
  • THumain1.LockType:=ltOptimistic;
  • THumain1.CursorLocation:= clUseClient;
  • THumain1.CursorType:=ctStatic;
  • THumain1.Active:=true;
  • if THumain1.locate('Id_Humain',IdUser,[]) then
  • begin
  • TClasseHumain1:=TADODataSet.Create(self);
  • TClasseHumain1.ConnectionString:= self.ConnectionString;
  • TClasseHumain1.Connection:= self.Connection;
  • TClasseHumain1.CommandType:=cmdText;
  • TClasseHumain1.CommandText:='Select * from ClasseHumain';
  • TClasseHumain1.LockType:=ltOptimistic;
  • TClasseHumain1.CursorLocation:= clUseClient;
  • TClasseHumain1.CursorType:=ctStatic;
  • TClasseHumain1.Active:=true;
  • if TClasseHumain1.Locate('Id_ClasseHumain',THumain1['Id_ClasseHumain'],[]) then
  • begin
  • TPrivilege1:=TADODataSet.Create(self);
  • TPrivilege1.ConnectionString:= self.ConnectionString;
  • TPrivilege1.Connection:= self.Connection;
  • TPrivilege1.CommandType:=cmdText;
  • TPrivilege1.CommandText:='Select * from Privilege';
  • //TPrivilege.CommandText:=TPrivilege.CommandText+' ';
  • TPrivilege1.CommandText:=TPrivilege1.CommandText+' Where Privilege.TableName='''+self.TableName+'''';
  • TPrivilege1.CommandText:=TPrivilege1.CommandText+' and Privilege.Id_ClasseHumain='+TClasseHumain1.FieldByName('Id_ClasseHumain').AsString;
  • TPrivilege1.CursorLocation:= clUseClient;
  • TPrivilege1.CursorType:=ctStatic;
  • TPrivilege1.Active:=true;
  • if(not(TPrivilege1.Eof)) then
  • begin
  • Self.Lire:=(TPrivilege1['Lire']);
  • Self.Ajout:=(TPrivilege1['Ajout']);
  • Self.Modif:=(TPrivilege1['Modif']);
  • Self.Supprim:=(TPrivilege1['Supprim']);
  • Self.Herite:=(TPrivilege1['Herite']);
  • //showmessage(Self.TableName+' - '+TPrivilege.FieldByName('Lire').AsString+TPrivilege.FieldByName('Ajout').AsString+TPrivilege.FieldByName('Modif').AsString+TPrivilege.FieldByName('Supprim').AsString+TPrivilege.FieldByName('Herite').AsString);
  • if(not(Ajout or Modif or Supprim)) then
  • Self.LockType:=ltReadOnly
  • else
  • Self.LockType:=ltOptimistic;
  • end
  • else
  • Self.LockType:=ltOptimistic;
  • inherited Active:=self.Lire;
  • TPrivilege1.Close;
  • end;
  • TClasseHumain1.Close;
  • end;
  • self.Id_User:=IdUser;
  • Self.BeforePost:=saveState;
  • THumain1.close;
  • end;
  • procedure TMyDataSet.Insert;
  • begin
  • if(self.Ajout)then
  • begin
  • inherited Insert;
  • self.FieldByName('Créé par').AsInteger:=self.Id_User;
  • self.FieldByName('Créé le').AsDateTime:=Date;
  • //self.IndexFields[0].AsString:=datetostr(date)+timetostr(time);
  • end;
  • end;
  • procedure TMyDataSet.saveState(Sender:TDataSet);
  • begin
  • if Sender.State=dsedit then
  • begin
  • Sender.FieldByName('Modifié par').AsInteger:=self.Id_User;
  • Sender.FieldByName('Modifié le').AsDateTime:=Date;
  • end
  • else
  • if Sender.State=dsinsert then
  • begin
  • Sender.FieldByName('Créé par').AsInteger:=self.Id_User;
  • Sender.FieldByName('Créé le').AsDateTime:=Date;
  • end;
  • end;
  • //proc Append pour insérer à la fin de la table
  • procedure TMyDataSet.Append;
  • begin
  • if(self.Ajout)then
  • begin
  • inherited Append;
  • self['Créé par']:=self.Id_User;
  • self['Créé le']:=Date;
  • //self.IndexFields[0].AsString:=datetostr(date)+timetostr(time);
  • end;
  • end;
  • procedure TMyDataSet.Delete;
  • begin
  • if(self.Supprim)then
  • begin
  • if messagedlg('Etes vous sure de supprimer l''enregistrement',mtconfirmation,[mbyes,mbno],0,mbNo)=mrYes then
  • inherited Delete;
  • end;
  • end;
  • procedure TMyDataSet.Edit;
  • begin
  • if(self.Modif)then
  • begin
  • inherited Edit;
  • self['Modifié par']:=self.Id_User;
  • self['Modifié le']:=Date;
  • end;
  • end;
  • procedure TMyDataSet.Post;
  • begin
  • inherited Post;
  • end;
  • procedure Register;
  • begin
  • RegisterComponents('ExtADO', [TMyDataSet]);
  • RegisterComponents('ExtADO', [TExtMyDataSource]);
  • end;
  • end.
unit MyDataSet;

interface

uses
  SysUtils, Classes, DB, ADODB, Dialogs, Windows, Messages, Variants,Controls, DBConsts;

type

  TExtMyDataSource = class;
  TMyDataSet = class;

  TExtMyDataSource = class (TDataSource)
  private
  //FDataSet:TMyDataSet;
    { Déclarations privées }
  protected
//  procedure UpdateState;
  //procedure SetDataSet(AdataSet:TMyDataSet);
    { Déclarations protégées }
  public
    { Déclarations publiques }
  published
  //property DataSet:TMyDataSet read FDataSet Write SetDataSet;
    { Déclarations publiées }
  end;

  TMyDataSet = class(TADODataSet)
   private
    { Déclarations privées }

  protected

    { Déclarations protégées }
  public

  Id_User:integer;
  aTableName:string;
  Lire,Ajout,Modif,Supprim,Herite:boolean;
  procedure Open(IdUser:integer);
  procedure Insert;    //Ajouter un champ
  procedure Append;
  procedure Edit; //Modifier le champ
  procedure post;
  procedure Delete(confirm:boolean);    //Supprime le champ
  procedure saveState(Sender:TDataSet);
    { Déclarations publiques }
  published
  property TableName:string read aTableName write aTableName;
    { Déclarations publiées }
  end;

procedure Register;

implementation


procedure TMyDataSet.Open(IdUser:integer);
var THumain1,TClasseHumain1,TPrivilege1:TADODataSet;

begin
if(self.CommandType=cmdTable) and (Self.TableName='')then self.TableName:=Self.CommandText
else
if(Self.TableName='')then
 Self.TableName:=Self.Name;

THumain1:=TADODataSet.Create(self);
//THumain1.ConnectionString:= self.ConnectionString;
THumain1.Connection:= self.Connection;
THumain1.CommandType:=cmdText;
THumain1.CommandText:='Select * from Humain';
THumain1.LockType:=ltOptimistic;
THumain1.CursorLocation:= clUseClient;
THumain1.CursorType:=ctStatic;
THumain1.Active:=true;
if THumain1.locate('Id_Humain',IdUser,[]) then
 begin
 TClasseHumain1:=TADODataSet.Create(self);
 TClasseHumain1.ConnectionString:= self.ConnectionString;
 TClasseHumain1.Connection:= self.Connection;
 TClasseHumain1.CommandType:=cmdText;
 TClasseHumain1.CommandText:='Select * from ClasseHumain';
 TClasseHumain1.LockType:=ltOptimistic;
 TClasseHumain1.CursorLocation:= clUseClient;
 TClasseHumain1.CursorType:=ctStatic;
 TClasseHumain1.Active:=true;
 if TClasseHumain1.Locate('Id_ClasseHumain',THumain1['Id_ClasseHumain'],[]) then
  begin
  TPrivilege1:=TADODataSet.Create(self);
  TPrivilege1.ConnectionString:= self.ConnectionString;
  TPrivilege1.Connection:= self.Connection;
  TPrivilege1.CommandType:=cmdText;
  TPrivilege1.CommandText:='Select * from Privilege';
  //TPrivilege.CommandText:=TPrivilege.CommandText+'  ';
  TPrivilege1.CommandText:=TPrivilege1.CommandText+' Where Privilege.TableName='''+self.TableName+'''';
  TPrivilege1.CommandText:=TPrivilege1.CommandText+' and Privilege.Id_ClasseHumain='+TClasseHumain1.FieldByName('Id_ClasseHumain').AsString;
  TPrivilege1.CursorLocation:= clUseClient;
  TPrivilege1.CursorType:=ctStatic;
  TPrivilege1.Active:=true;
  if(not(TPrivilege1.Eof)) then
   begin
   Self.Lire:=(TPrivilege1['Lire']);
   Self.Ajout:=(TPrivilege1['Ajout']);
   Self.Modif:=(TPrivilege1['Modif']);
   Self.Supprim:=(TPrivilege1['Supprim']);
   Self.Herite:=(TPrivilege1['Herite']);
   //showmessage(Self.TableName+' - '+TPrivilege.FieldByName('Lire').AsString+TPrivilege.FieldByName('Ajout').AsString+TPrivilege.FieldByName('Modif').AsString+TPrivilege.FieldByName('Supprim').AsString+TPrivilege.FieldByName('Herite').AsString);
   if(not(Ajout or Modif or Supprim)) then
    Self.LockType:=ltReadOnly
   else
    Self.LockType:=ltOptimistic;
   end
  else
   Self.LockType:=ltOptimistic;
   inherited Active:=self.Lire;
   TPrivilege1.Close;
  end;
 TClasseHumain1.Close;
 end;
self.Id_User:=IdUser;
Self.BeforePost:=saveState;
THumain1.close;
end;

procedure TMyDataSet.Insert;
begin
if(self.Ajout)then
begin
inherited Insert;
self.FieldByName('Créé par').AsInteger:=self.Id_User;
self.FieldByName('Créé le').AsDateTime:=Date;
//self.IndexFields[0].AsString:=datetostr(date)+timetostr(time);
end;
end;

procedure TMyDataSet.saveState(Sender:TDataSet);
begin
if Sender.State=dsedit then
begin
  Sender.FieldByName('Modifié par').AsInteger:=self.Id_User;
  Sender.FieldByName('Modifié le').AsDateTime:=Date;
end
else
if Sender.State=dsinsert then
begin
 Sender.FieldByName('Créé par').AsInteger:=self.Id_User;
 Sender.FieldByName('Créé le').AsDateTime:=Date;
end;
end;

//proc Append pour insérer à la fin de la table
procedure TMyDataSet.Append;
begin
if(self.Ajout)then
begin
inherited Append;
self['Créé par']:=self.Id_User;
self['Créé le']:=Date;
//self.IndexFields[0].AsString:=datetostr(date)+timetostr(time);
end;
end;

procedure TMyDataSet.Delete;
begin
if(self.Supprim)then
begin
if messagedlg('Etes vous sure de supprimer l''enregistrement',mtconfirmation,[mbyes,mbno],0,mbNo)=mrYes then
inherited Delete;
end;
end;

procedure TMyDataSet.Edit;
begin
if(self.Modif)then
begin
inherited Edit;
self['Modifié par']:=self.Id_User;
self['Modifié le']:=Date;
end;
end;

procedure TMyDataSet.Post;
begin
inherited Post;
end;


procedure Register;
begin
  RegisterComponents('ExtADO', [TMyDataSet]);
  RegisterComponents('ExtADO', [TExtMyDataSource]);
end;

end.

 Conclusion

Les bugs sont corrigés et un fichier d'aide est associé

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Demo_ExtADO
    • ExtADO.mdbTélécharger ce fichier [Réservé aux membres club]1 290 240 octets
    • Project1.dprTélécharger ce fichier [Réservé aux membres club]Voir ce fichier336 octets
    • Project1.dprojTélécharger ce fichier [Réservé aux membres club]3 440 octets
    • Project1.dproj.localTélécharger ce fichier [Réservé aux membres club]1 048 octets
    • Project1.resTélécharger ce fichier [Réservé aux membres club]3 232 octets
    • Unit1.dcuTélécharger ce fichier [Réservé aux membres club]3 791 octets
    • Unit1.dfmTélécharger ce fichier [Réservé aux membres club]808 octets
    • Unit1.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier406 octets
    • Unit2.dcuTélécharger ce fichier [Réservé aux membres club]2 806 octets
    • Unit2.dfmTélécharger ce fichier [Réservé aux membres club]722 octets
    • Unit2.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier831 octets
  •   ExtADO
    • ArConnect.dcuTélécharger ce fichier [Réservé aux membres club]5 895 octets
    • ArConnect.dfmTélécharger ce fichier [Réservé aux membres club]4 752 octets
    • ArConnect.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 435 octets
    • Connect.dcuTélécharger ce fichier [Réservé aux membres club]5 809 octets
    • Connect.dfmTélécharger ce fichier [Réservé aux membres club]2 894 octets
    • Connect.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 403 octets
    • DBUserInfo.dcuTélécharger ce fichier [Réservé aux membres club]14 002 octets
    • DBUserInfo.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier9 944 octets
    • ExtADO.dcuTélécharger ce fichier [Réservé aux membres club]2 937 octets
    • ExtADO.dpkTélécharger ce fichier [Réservé aux membres club]748 octets
    • ExtADO.dprojTélécharger ce fichier [Réservé aux membres club]3 904 octets
    • ExtADO.dproj.localTélécharger ce fichier [Réservé aux membres club]1 163 octets
    • ExtADO.mdbTélécharger ce fichier [Réservé aux membres club]1 290 240 octets
    • ExtADO.resTélécharger ce fichier [Réservé aux membres club]5 940 octets
    • FrConnect.dcuTélécharger ce fichier [Réservé aux membres club]5 742 octets
    • FrConnect.dfmTélécharger ce fichier [Réservé aux membres club]3 940 octets
    • FrConnect.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 378 octets
    • MyConnect.dcuTélécharger ce fichier [Réservé aux membres club]3 081 octets
    • MyConnect.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 847 octets
    • MyDataSet.dcuTélécharger ce fichier [Réservé aux membres club]14 306 octets
    • MyDataSet.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier5 386 octets
  • Les composants ExtAdo.docTélécharger ce fichier [Réservé aux membres club]261 632 octets

Télécharger le zip


 Historique

16 septembre 2008 01:18:22 :
manque de la source
22 septembre 2008 09:03:49 :
Mise à jours de code source
22 septembre 2008 17:24:53 :
Mise à jour
24 septembre 2008 14:19:10 :
Correction et mise à jours des composanst
09 octobre 2008 15:53:16 :
Uned capture
09 octobre 2008 15:56:54 :
Capture
12 octobre 2008 01:31:07 :
Correction des bugs et ajout d'un document word pour aider les utilisateurs de composant.
12 octobre 2008 01:35:55 :
Les bugs sont corrigés et un fichier d'aide est associé
22 septembre 2010 10:27:35 :
Vérifications et corrections de bugs

 Sources du même auteur

Source avec Zip Source avec une capture DBNAVIGATORPLUS

 Sources de la même categorie

Source avec Zip MOVCONTROL par abmed1963
Source avec Zip Source avec une capture PACKAGE DE COMPOSANTS CINDY V4.41 par MAURICIO
Source avec Zip Source avec une capture DBNAVIGATORPLUS par pascal1541
Source avec Zip Source avec une capture EVALUATION D' EXPRESSIONS MATHÉMATIQUE (MÉTHODE RPN) par MAURICIO
Source avec Zip Source avec une capture COMPOSANT TQPROGRESSBAR UNE BARRE DE PROGRESSION... par yanb

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PROJETS DÉMO DU PACK DE COMPOSANTS CINDY V4.30 par MAURICIO
Source avec Zip Source avec une capture COMPOSANT TQPROGRESSBAR UNE BARRE DE PROGRESSION... par yanb
Source avec Zip TGPS COMPOSANT DE GESTION DES TRAMES NMEA 0185 par ILP
Source avec Zip COMPOSANT TCYCOMMUNICATE - COMMUNIQUER AVEC VOS AUTRES APPLI... par MAURICIO
Source avec Zip Source avec une capture DBGRID AVEC TRI SUR CLIC, MOLETTE ET COULEURS par pouicky

Commentaires et avis

Commentaire de FENETRES le 25/09/2008 12:37:25

Une gestion par Trigger me semble bien plus adaptée !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Ado et connection a une base de donnee [ par developpeur_mehdi ] BonjoursVoila je voudrais connaitre la véritable utilité du composant adoconnection, car pour l'instant j'arrive a travailler directement avec le com Composant ado connection a une BD [ par developpeur_mehdi ] VoilaJaimer'ai savoir comment avoir un rafraichissement de la connection a une base de donnée automatiquement a l'ouverture d'un form1 (via le composa TDatabase, connexion a base access dynamique [ par usmok ] je voudrais pouvroir associer mon TDatabase à un bdd Access à l'exécution,le tout sans utiliser de lien ODBCles valeurs de mon database sont initialis comment ouvrir une connexion àvec programmation avec l'objet ADO [ par benalioua1975 ] slt à l'equipe, je voudrait savoir comment ouvrir une Bdd ADO par programmationuser :??password:??je sait comment me connecter je cherche seuleme connexion oracle avec ADO [ par gattou ] bonjour j essai de me connecter a distance sur une base oracle 9i a partir d une application developpee sur delphi 5Pour cela j utilise ADo,dans un pr Programme console et composant database [ par VTCFMAN ] Peut-on utiliser les composants Database dans un programme console avec ou sans module de données ?. Si non existe-t-il des des librairies permettant test connexion ADO [ par gabs77 ] bonjour,je cherche à effectuer un test de connexion à une base de donnée de tel sorte qu'il y est 2 réactions possibles :1/ si la connexion est établi composant ADO [ par ryoryo ] salut ! j'utilise delphi 2005 et MySQL je développe une application qui me permettra sous delphi d'enregistrer une image dans la base de donnée MySQ composant ado [ par nada2008 ] bonjouuuuuuur,je reçoi l'erreur suivante quand j'insere un composant ADO: erreur de creation de l'objet , verfier que les composants microsoft data ac connexion ADO [ par wahidov2000 ] bonjour tm;j'essai de tester une connexion ADO en utilisant le langage delphi, ds le premier cas ou la chaine de connexion est correcte(ADOConnection1


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 0,437 sec (4)

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