40
REPUBLIQUE TUNISIENNEMINISTRE DE L’ENSEIGNEMENT SUPERIEURINSTITUT SUPERIEUR DES ETUDE TECHNOLOGIQUE DE NABEUL RAPPORT DE STAGE : SAGEM TUNISIE SDIRI MOHAMED SALAH

Stage Initiation Pas Fini Encore

  • Upload
    sd

  • View
    468

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Stage Initiation Pas Fini Encore

REPUBLIQUE TUNISIENNEMINISTRE DE L’ENSEIGNEMENT SUPERIEURINSTITUT SUPERIEUR DES ETUDE TECHNOLOGIQUE DE NABEUL

RAPPORT DE STAGE : SAGEM TUNISIE

SDIRI MOHAMED SALAH

Page 2: Stage Initiation Pas Fini Encore

REMERCIMENT

Au terme de ce travail, Je tiens à remercier tous ceux qui ont

Contribué de près ou de loin à la réalisation de ce rapport et de faire réussir mon stage.

Tout d’abord j’adresse mes vifs remerciements à mon encadreur M.ABEDA SABER

pour m’avoir donné les moyens, les conseils techniques et l’assistance nécessaires.

J’ai particulièrement apprécié sa compétence, son professionnalisme et sa patience

envers moi pour éclairer les aspects techniques et scientifiques sombres.

J’exprime également mes remerciements à toutes les personnes de la direction des

ressources humaines et le service de formation.

1

Page 3: Stage Initiation Pas Fini Encore

CHAPITRE I : PRESENTATION GENERALE

I. INTRODUCTION :

SAGEM TUNISIE fait partie du groupe SAFRAN qui est parmi les leaders dans la conception des produits électroniques, de télécommunication, de traitement et la transmission numérique de l’information.

SAGEM est le deuxième groupe français de télécommunication, le troisième groupe européen de défense et de sécurité, parmi ces clients les plus constructeurs de l’Amérique, d’Europe et de l’Asie. Il est implanté dans plus de 30 pays parmi eux la Tunisie.

SAGEM Tunisie Communications fondée en janvier 2003 en termes de rachat d’une petite entité de 86 personnes ( SATELEC TUNISIE ), SAGEM COMMUNICATIONS a développé autour de ce petit noyau un site de production LOW COST qui compte de nos jours plus de 4000 personnes ,c’ est une société totalement exportatrice non résidente ,qui fabrique les cartes électronique en tant que sou traitant, des consommables fax ainsi que les produits internes terminaux monétiques et des modems de connexion à haut débit…

Actuellement le site compte plus de 4000 employés et il y’a l’idée d’implantation d’un troisième site.

Les usines sont implantées dans la banlieue sud de Tunis (Ben Arous), à l’adresse : usine SAGEM TUNISIE Borg Gorbel 2013 Ben Arous Tunisie.

2

Page 4: Stage Initiation Pas Fini Encore

I. ORGANISATION DU SAGEM TUNISIE

L’activité de SAGEM TUNISIE se structure autour des unités opérationnelles de fabrication (UF) et d’unités de support administratif et financier (service)

1. UNITE DE FABRIQUATION

L’unité de fabrication assure la réalisation du programme de production, en termes de qualité, coûts et délais .elle gère les moyens humains et matériels nécessaires à la réalisation des opérations dont elle a la charge. Son périmètre va des approvisionnements jusqu’à la livraison, SAGEM TUNISIE contient principalement les unités de fabrications reparti sur deux usines.

2. SERVICES

Les bureaux de services représentent les supports de production dans les usines, ils gèrent les problèmes rencontrés en cour de fabrication, dans la société de SAGEM Tunisie on trouve le service suivant :

Service qualité et environnement (SQE)   :

- Assure de façon permanente la satisfaction du client

Service industriel :

- Ce Service a pour mission la maintenance des outils de production ainsi la maintenance et l’entretien des bâtiments. Maîtriser le taux de disponibilité des moyens et minimiser le coût d’exploitation des équipements.

Service Contrôle De Gestion Et Informatique   :

- Assurer la maîtrise des flux financiers dans l’entreprise.- Déterminer et analyser les résultats comptables périodiques.- Réaliser le contrôle de gestion.- Réaliser le pilotage des moyens informatiques.- Assure la sécurité du réseau - Gérer et administrer le réseau de l’entreprise - Développement des applications

Service Process  :

3

Page 5: Stage Initiation Pas Fini Encore

- le service procès Chargé de la réception et de la mise en place, de la garantie de fiabilité et de capacité de l’ensemble des moyens techniques du site validés par les pôles technologiques, ainsi la proposition d’axes d’améliorations de la qualité et de la productivité aussi l’optimisation de l’exploitation des moyens de productions.

Service des Ressources Humaines  :

- le service RH Chargé d’assurer la gestion des ressources humaines qui vont permettre la réalisation des objectifs industriels de l’établissement.

Service Douanes  :

- ce service assurer la réception (dédouanement) des matières premières ainsi que l’expédition des produits finis et semi-finis.

Service Industrialisation:

- Crée en nov2007, ce service a pour mission de réussir & de le passage de la phase proto à la phase de mise en production série des produits. Il opère actuellement sur U2.

4

Page 6: Stage Initiation Pas Fini Encore

CHAPITRE II : PROCESSUS DE FABRICATION

Processus de fabrication sur une ligne de production

I. SERIGRAPHI

La sérigraphie est un moyen de déposer un produit d’une manière sélective en utilisant un écran muni d’ouvertures et une racle. On utilise la racle pour amener le produit d’une extrémité à L’autre de l’écran, en exerçant une pression sur Le produit à une vitesse de déplacement constant. Ceci permet de Transférer le produit sur le circuit imprimé au Passage des ouvertures. Le produit à déposer

5

Test final

Test In Situ

Brasage vague

Insertion manuelle

Brasage dans four

Dépose de CMS : Pick and Place

Dépose de CMS: Chip shooter

Dépôt Pâte à braser

Page 7: Stage Initiation Pas Fini Encore

est une crème à braser dont les caractéristiques principales sont la viscosité et la Thixotropie.

Fig 1 : le phénomène de sérigraphie

II. FONCTIONNEMENT DE LA MACHINE 

On peut décrire le fonctionnement de cette machine avec les systèmes cités dessous :

LE SYSTEME DE MAINTIEN DE LA CARTE   :

Le maintien de la carte sur le convoyeur de la machine se fait soit :

-Par Verrouillage mécanique

-Par du vide ou il y’aura aspiration de la carte

LE SYSTEME DE RACLAGE : C’est le système permettant la mise en œuvre de l’opération de raclage, les paramètres à surveillés sont :

6

Page 8: Stage Initiation Pas Fini Encore

- angle de raclage (orientation de la tête / déplacement)

- pression d’appui sur le pochoir

- équilibrage gauche droite

- angle des racles LE SYSTEME DE VISION (ALIGEMENTS)   :

C’est le système permettant l’alignement de la carte avec le pochoir pour que les ouvertures de ce dernier coïncident bien avec les plages d’accueil.

LE SYSTEME DE NETTOYAGE   :

Après plusieurs cycles de sérigraphie la crème vient rester sur la face inférieure du pochoir, Pour palier à ça les machines de sérigraphies sont équipées d’un système de nettoyage permettant de balayer tout le pochoir en injectant un produit de nettoyage à l’aide d’une pompe.

Fig 2 : la machine de sérigraphie

7

Page 9: Stage Initiation Pas Fini Encore

III. MACHINE DE POSE

La deuxième opération après la sérigraphie est la pose des composants avec une vitesse très élevée sur les plages d’accueil correspondant. Il y’a différents types de composant à poser qui différent essentiellement par:

La taille : La taille des composant allant du petit composant CMS jusqu’au grand composant comme les connecteurs.

Le conditionnement des composants : Ils peuvent être approvisionnés soit en bandes soit en plateau

Le type des composants : selon la nature de fonctionnement des composant sur la carte il y’a les composants résistifs, les composants programmables, les composants pour la connectique. Le rôle essentiel d’une machine de pose est de placer ces Composants aux emplacements spécifiés de la carte avec le maximum de précision et de rapidité qu’il faut en tenant compte bien sur des différences notées dessus entre les divers composants.

Donc pour chaque carte électronique devant recevoir des composants il y’a une séquence bien déterminé que la machine doit faire pour avoir à la sortie une carte équipée.

Fig 3:les tables fig4 : chargeur

Fig 5 : la tourelle fig 6 : camera d’analyse

8

Page 10: Stage Initiation Pas Fini Encore

CHAPITRE III : SERVICE DE DEPANNAGE

1. DEPANNAGE 

Sur une poste de dépannage on trouve : Un tableau qui contient :

Feuille de dépannage, dans laquelle le dépanneur inscrit les genres des pannes rencontrés et dans qu’elle étape du process cette panne est commise.

Nomenclature arborescente Schéma électrique Schéma de composants montés en surface Schéma de composants piqués

Armoire pour les différents composants a utilisés Boite pour les rebuts

2. RETOUCHE SOUDAGE 

Lorsque la qualité en sortie de vague se dégrade au cours de la journée ,il faut absolument vérifier que tous les sous-ensembles fonctionnent correctement ,alors il est nécessaire qu’ après l’opération de brasage ,le nettoyage s’impose pour tout circuit électrique en particulier si la brasure a été faite avec un flux actif ;ceci pour éliminer toute forme de contamination sous forme d’acides ,de sels ,d’agents ionique ,de produit de réaction et de décomposition de flux ,de graisse ,de poussières d’impuretés.

3. POSTE D’ASSEMBLAGE

Le poste d’assemblage c’est le départ du cycle de la fabrication Dans cette étape l’ouvrier est censé à assembler sur la microUn afficheur LCD Qui communique avec elle à travers un zébras

4. POSTE D’INTÉGRATION

Le travail au poste d’intégration consiste à assembler la carte micro et la carte d’alimentation sur le socle inférieur du compteur et mettre toute les liaisons nécessaire.

5. POSTE TEST IN-SITU

Le test consiste à contrôler les pannes après entrer four qui vérifier le court-circuit.

9

Page 11: Stage Initiation Pas Fini Encore

6. POSTE DE TEST FONCTIONNEL

Le test effectué dans ce poste concerne la compatibilité de la version du compteur, le fonctionnement des boutons la communication avec le flag et le modem, le bon fonctionnement anti-fraude et le test micro.

7. SERVICE PROCCES

Lors d’un nouveau produit on doit créer une nouvelle programme sur les différons machine de la ligne CMS surtout la machine de sérigraphie MPM AP 25, pour le faire on doit respecter un démarche pour obtenir une sérigraphie bonne on doit vérifier que les mires de la carte est confondu avec les mires du écran, dans l’UF monétique la plus grande carte nécessite 6 mires a déclaré aux programmes

8. SERVICE TEST 

Ce service a pour objectif la maintenance des TI, TF gérer à travers un ordinateur et de résoudre ses problème logistique tel que le réseau, connexion ADSL ou matérielle tel que les câbles de connexion et les ports USB.

fig7 : Le poste de dépannage

10

Page 12: Stage Initiation Pas Fini Encore

11

Partie II : DEVELOPPEMENT D’UNE APPLICATION D’ACQUISITION ET DE STATIQTIQUE APRES LES TEST DES PRODUITS

Page 13: Stage Initiation Pas Fini Encore

I. LE DEVELOPPEMENT INFORMATIQUE CHEZ SAGEM COMMUNICATION (Ben Arous)

Selon la période de mon stage j’ai constaté que le développement chez Sagem consiste a créé des applications de gestion et des applications orienté industriel.

Par exemple :

-applications de test de matériel (test sur les produits de Sagem)

-application de statistique pour l’amélioration des tests et l’aide de prendre des décisions pour améliorer la production. 

Il y a des autres domaines de développement en utilisant d’autres outils pour des autre raisons comme labVIEW que je n’avais pas l’occasion de l’explorer, à cause d’un régime de travail très élever.

II. DEVELOPPEMENR D’UNE APPLICATION D’ACQUISITION DES DONNEES ET DE STATISTIQUE

1. CREATION D’UNE INTERFACE GRAPHIQUE EN MODE ASSISTANT DANS LABWINDOWS/CVI

LabWindows /CVI donne la possibilité d’utilisé des contrôle facile utilisé pour réduire le temps de développement. Après le lancement de l’environnent on clique sur File->New->Project from Template, la dialogue suivante s’affiche.

Il nous reste que sélectionné user Interface Application puis le nommer « ex. Application1 » ensuite valider par OK. Une nouvelle interface vierge apparait.

12

Page 14: Stage Initiation Pas Fini Encore

fig 9   : interface prête à l’exploiter

1.1 LE CONTROLE TEXT (String) :

Pour l’utilisé il suffit de cliquer sur le bouton droite dans l’interface montrer ci-dessus voire (fig 9) ensuite en choisi parmi les contrôle Text le contrôle String (voir annexe fig ?). Une foi le contrôle apparait dans la zone de l’interface et pour rendre le référencement de l’objet plus claire pendant la phase de programmation on l’attribue un nom constant pour le spécifier, on procède pour l’éditer par un clic droit sur le contrôle, une boite apparait ensuite en peut donner un nom plus significatif dans le champ Constant name (voir annexe fig ??).

1.2 EXPLOITATION DU CONTROLE TEXT EN MODE PROGRAMMATION

1.2.1 La fonction getCtrlVal() :

Déclaration  : int GetCtrlVal (panelHandle int, int controlID, @ du variable);

Dans la programmation évènementielle graphique en C pour utiliser un contrôle on doit spécifier le numéro de Handle, le contrôle cible et le variable pour contenir le résultat, La fonction getCtrlVal permet de récupérer la valeur du champ Text saisi dans une variable nommée n.Exemple :char n [20]; // tableau de type char de 20 cellulesGetCtrlVal(panelHandle,PANEL_NOM,&n);

13

Page 15: Stage Initiation Pas Fini Encore

1.2.2 LA FONCTION SetCtrlVal() :

Déclaration  : int SetCtrlVal (panelHandle int, int controlID, la valeur void *);Définit la valeur d'un contrôle à une valeur que vous spécifiez.Exemple :SetCtrlVal (panelHandle ,PANEL_NOM, n);

1.3 LE BOUTON DE COMMANDE

1.3.1 PRINCIPE DE LA FONCTION CALLBACK

La fonction de rappel répondre à tous les évènements du programme par exemple une action sur une commande de l'interface graphique. Les prototypes de la fonction de rappel définie dans bibliothèque userint.h. LabWindows / CVI transmet les informations d'événements de l'interface graphique pour les fonctions de rappel. Par exemple, les fonctions de rappel de Recevoir le type d’événement qui a eu lieu l’interface utilisateur.C'est à dire qu’on va passer une fonction en paramètre d'une autre fonction (on passe par des pointeurs de fonctions).Résumé : Cela sert énormément pour pouvoir faire des notifications par exemple (beaucoup de systèmes d'interfaces graphiques utilisent ce système).

Fichier source (.c)

Schéma illustre le principe de la fonction Callback

14

Contrôle 1

Indicateur

Contrôle 2 Callback Function

Panel Callback Function

Contrôle 1 Callback Function

main ()

Contrôle 2 Event info

Event info

Event info

Page 16: Stage Initiation Pas Fini Encore

1.3.2 RECUPERATION DES DONNEES DE LA ZONE DE TEXT

Je commence tout d’abord par un exemple en code C

Code :

int CVICALLBACK ok (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)

{char n[100]; //une variable pour contenir le nom d'utilisateurchar p[100];//une variable pour contenir le password switch (event){

case EVENT_COMMIT: //évènement du clic sur le bouton OK GetCtrlVal( panelHandle,PANEL_NOMm,&n);//récupération du nom

GetCtrlVal( panelHandle,PANEL_NOMm,&p);// récupération du password

break;}return 0;

}

2. PERSISTANCE DES DONNEES

2.1COMMUNIQUER AVEC UNE BASE DE DONNES

Après le test par les instruments de test et acquisition «opération consiste à la numérisation des signaux analogique par des instruments DAQ »de produit les résultats et les valeurs de test doivent être enregistré dans une base de données pour les récupérer dans la phase de statistique.

la démarche à suivre avec LabWindows/CVI pour communiquer avec une base de données. De la même façon qu’une application se décompose en plusieurs phases :

15

1 Initialisation

2 Boucle de gestion des événements

3 Clôture de l’application

Page 17: Stage Initiation Pas Fini Encore

Toute interaction avec une base va se faire à travers une session. Cette dernière

peut-être décomposée comme suit :

C’est une phase un peu délicate et je n’ai pas pu la terminer encours de ce stage, mais j’ai continué à travailler jusqu’au jour d’hui

2.2 CREATION D’UNE BASE DE DONNEES AVEC LABWINDOWS/CVI

la création d’une base de données nécessite par fois la création d’un fichier header (.h) contient la définition des ID « de type entier » qui vont servir ensuite pour les fonctions SetCtrlVal et GetCtrlVal

exemple :

#define PANEL_TABLE 2

#define PANEL_TEXTBOX 3

#define PANEL_SQLDBAddDataSource 4 /* callback function: SQLAddDataSource */

16

Déconnexion de la base

Clôture des requêtes

Récupération ou traitement des données

Connexion à la base de données

Exécution ou activation des requêtes SQL

Page 18: Stage Initiation Pas Fini Encore

#define PANEL_SQLDBint 5 /* callback function: SQLInitializate */

NOTE : les ID contrôle prennent la deuxième position dans les paramètres du Set et Get et la fonction SetCtrlAttrib

Pour créer un fichier base de données (.mdb) on procède comme ceci 

Code :

int CVICALLBACK SQLInitializate (int panel, int control, int event,

void *callbackData, int eventData1, int eventData2)

{

float ODBCVer;

switch (event)

{

case EVENT_COMMIT:

//create new databse file

if (!FileExists ("test_empty.mdb", 0))

{

MessagePopup("Error","Not found file,please check test_empty.mdb in directory");

return -1;

}

DeleteFile ("test.mdb");

CopyFile ("test_empty.mdb", "test.mdb");

//initialisation de la base de données

if (SQLDBint(&AccessDb)==FAIL)

{

MessagePopup("Error","Database init failed!");

return -1;

17

Page 19: Stage Initiation Pas Fini Encore

}

SQLDBGetODBCVersion(AccessDb,&ODBCVer);

if (ODBCVer<3)

{

MessagePopup("Error","ODBC version is too lower!");

}

SetCtrlAttribute (panelHandle, control, ATTR_DIMMED, 1);

SetCtrlAttribute (panelHandle, PANEL_SQLDBAddDataSource, ATTR_DIMMED, 0);

InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"Database initialize,SQLDBint");

break;

}

return 0;

}

18

Page 20: Stage Initiation Pas Fini Encore

Conclusion

Le stage au sien de SAGEM, a été une occasion pour l’insertion dans la vie

professionnelle.

Au cours de ce stage j’ai eu un stage de qualité en plus une expérience assez

valeureuse qui m’a permis de pratiquer mes connaissances universitaires. En effet, j’ai

pu évaluer mes connaissances par rapport aux besoins de l’entreprise et acquérir de

nouvelles Technologies et méthodes qui me seront utiles à l’avenir. Evidemment, j’ai dû

m’adapter aux horaires de l’entreprise qui sont : 8h-12h et 12 :30-17h. Tous ces

facteurs m’ont permis de découvrir le monde de l’entreprise sur un plan professionnel .

19

Page 21: Stage Initiation Pas Fini Encore

20

Annexe

Page 22: Stage Initiation Pas Fini Encore

Ajout d’un bouton

Edition des paramètres du bouton

21

Page 23: Stage Initiation Pas Fini Encore

Génération automatique du code de bouton

Code générer

22

Page 24: Stage Initiation Pas Fini Encore

Edition des paramètres du tableau « elle va contenir les valeurs de test »

Aperçu d’ une interface de variation des courbe de teste

Code d’initialisation de la base de données :

23

Page 25: Stage Initiation Pas Fini Encore

int CVICALLBACK SQLInitializate (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)

{float ODBCVer;switch (event){case EVENT_COMMIT://création d’une nouvelle base de donnéesif (!FileExists ("test_empty.mdb", 0)){MessagePopup("Error","Not found file,please check test_empty.mdb in directory");return -1;}DeleteFile ("test.mdb");CopyFile ("test_empty.mdb", "test.mdb");

//initialisation de la baseif (SQLDBint(&AccessDb)==FAIL){MessagePopup("Error","Database init failed!");return -1;}//vérification de la version de l’ODBCSQLDBGetODBCVersion(AccessDb,&ODBCVer);if (ODBCVer<3){MessagePopup("Error","ODBC version is too lower!"); }SetCtrlAttribute (panelHandle, control, ATTR_DIMMED, 1);SetCtrlAttribute (panelHandle, PANEL_SQLDBAddDataSource, ATTR_DIMMED, 0);InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"Database initialize,SQLDBint");break;}return 0;}

Code d’ajout d’une source de données :

int CVICALLBACK SQLAddDataSource (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)

{long errorcode;switch (event){case EVENT_COMMIT:

24

Page 26: Stage Initiation Pas Fini Encore

//requête si la configuration DSN existe if (SQLDBFindDSN(AccessDb,"TempAccess")==FAIL){

//setup temp DSNif(SQLDBAddDataSource (ODBC_ADD_SYS_DSN, "Microsoft Access Driver (*.mdb)\0", "DSN=TempAccess\0DBQ=test.mdb\0")!=PASS){SQLDBGetInstallerError (&errorcode, AccessDb->ErrorMessage, 500, IGNORE);MessagePopup("Error",AccessDb->ErrorMessage);}else{SetCtrlAttribute (panelHandle, control, ATTR_DIMMED, 1);SetCtrlAttribute (panelHandle, PANEL_SQLConnection, ATTR_DIMMED, 0);InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"Add a new data source: SQLDBAddDataSource");}}else{SetCtrlAttribute (panelHandle, control, ATTR_DIMMED, 1);SetCtrlAttribute (panelHandle, PANEL_SQLConnection, ATTR_DIMMED, 0);InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"data source is existed: SQLDBFindDSN");}break;}return 0;}

Code de la fonction de connexion à la base de données :

int CVICALLBACK SQLConnection (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)

{char DSNName[20];char temp[200];

switch (event){case EVENT_COMMIT://Connect databaseif (SQLDBDSNConnect (AccessDb, "TempAccess", "admin","" )!=PASS){MessagePopup("Error",AccessDb->ErrorMessage);}else{//lecture du nom de DSNSQLDBGetDriverInfo (AccessDb, SQL_DATA_SOURCE_NAME, DSNName, 20, NULL);

25

Page 27: Stage Initiation Pas Fini Encore

strcpy(temp,"Connect database:SQLDBDSNConnect DSN name:");strcat(temp,DSNName);InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,temp);SetCtrlAttribute (panelHandle, PANEL_SQLDBEndTran, ATTR_DIMMED, 0);SetCtrlAttribute (panelHandle, control, ATTR_DIMMED, 1);SetCtrlAttribute (panelHandle, PANEL_SQLDBDiscardConn, ATTR_DIMMED, 0);}break;}return 0;}

Code de la fonction qui permet de crée une table :

int CVICALLBACK SQLCreateTable (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)

{switch (event){case EVENT_COMMIT://création d’une nouvelle tableif (SQLDBExecImmediate (AccessDb, "create table Employee([ID] AUTOINCREMENT PRIMARY KEY,[Name] varchar(20),[Birthday] DATETIME,[Pay] double)")!=PASS){MessagePopup("Error",AccessDb->ErrorMessage);}else{InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"executes a preparable statement Immediate:SQLDBExecImmediate create Employee table");SetCtrlAttribute (panelHandle, PANEL_SQLDBEndTran1, ATTR_DIMMED, 0);SetCtrlAttribute (panelHandle, control, ATTR_DIMMED, 1);}break;}return 0;}

Code d’une fonction de transaction :

int CVICALLBACK SQLDBEndTran1 (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)

{switch (event){case EVENT_COMMIT://submit transactionsSQLDBTransaction (AccessDb, SQL_COMMIT);

26

Page 28: Stage Initiation Pas Fini Encore

InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"submit create transactions:SQLDBEndTran");

//insertion des donnéesSQLDBExecImmediate (AccessDb, "insert into Employee ([ID],[Name],[Birthday],[Pay]) values (1,'med','2010-4-5',2050)");SQLDBExecImmediate (AccessDb, "insert into Employee ([ID],[Name],[Birthday],[Pay]) values (2,'sdiri','2006-8-21',4000)");SQLDBExecImmediate (AccessDb, "insert into Employee ([ID],[Name],[Birthday],[Pay]) values (3,'shr','2001-8-21',3000.43)");SQLDBExecImmediate (AccessDb, "insert into Employee ([ID],[Name],[Birthday],[Pay]) values (4,'aoni','1998-8-21',8057.54)");InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"insert new data");SetCtrlAttribute (panelHandle, PANEL_SQLDBEndTran1, ATTR_DIMMED, 0);SetCtrlAttribute (panelHandle, control, ATTR_DIMMED, 1);

//submit transactionsSQLDBTransaction (AccessDb, SQL_COMMIT);InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"submit insert transactions:SQLDBEndTran");SetCtrlAttribute (panelHandle, PANEL_SQLReadData, ATTR_DIMMED, 0);SetCtrlAttribute (panelHandle, control, ATTR_DIMMED, 1);break;}return 0;}

Code de la fonction de Lecture des données :

int CVICALLBACK SQLReadData (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)

{char TableName[20],ColumnsName[20],ColumnsType[20];char temp[100];int i=1,ColumnsSize,RowNumber;long IDlen,Namelen,DatetimeLen,Paylen;int ID;char Name[20],Birthday[20];double Pay;switch (event){case EVENT_COMMIT://lecture de la table nomif (SQLDBGetTable(AccessDb, "TABLE")!=PASS){MessagePopup("Error",AccessDb->ErrorMessage);}else{//bind variable

27

Page 29: Stage Initiation Pas Fini Encore

SQLDBBindCol (AccessDb, 3, SQL_C_CHAR, TableName, 20,IGNORE);

while(SQLDBFetch(AccessDb)!=IS_NO_DATA){Fmt(temp,"%s%s","Read table name:SQLDBGetTable:",TableName);InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,temp);}SQLDBCloseCursor (AccessDb);SQLDBResetStatement (AccessDb); //reset statment handle}

//lecture des colonnesif (SQLDBGetColumns (AccessDb, TableName)!=PASS){MessagePopup("Error",AccessDb->ErrorMessage);}else{//bind variableSQLDBBindCol (AccessDb, 4, SQL_C_CHAR, ColumnsName, 20,IGNORE);SQLDBBindCol (AccessDb, 6, SQL_C_CHAR, ColumnsType, 20,IGNORE);SQLDBBindCol (AccessDb, 7, SQL_C_SLONG, &ColumnsSize, IGNORE,IGNORE);while(SQLDBFetch(AccessDb)!=IS_NO_DATA){Fmt(temp,"%s%s%s%s","Read columns name:SQLDBGetColumns:",ColumnsName," Type:",ColumnsType);InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,temp);SetTableColumnAttribute (panelHandle, PANEL_TABLE, i, ATTR_LABEL_TEXT, ColumnsName);SetTableColumnAttribute (panelHandle, PANEL_TABLE, i, ATTR_COLUMN_WIDTH, ColumnsSize*3);i++;}

SQLDBCloseCursor (AccessDb);SQLDBResetStatement (AccessDb); //reset statment handle}//lecture des donnéesif (SQLDBExecImmediate (AccessDb, "Select * from Employee")!=PASS){MessagePopup("Error",AccessDb->ErrorMessage);}else{//bind to variableSQLDBBindCol (AccessDb, 1, SQL_C_ULONG, &ID, IGNORE, &IDlen);SQLDBBindCol (AccessDb, 2, SQL_C_CHAR, Name, 20,&Namelen);SQLDBBindCol (AccessDb, 3, SQL_C_CHAR, Birthday, 20,&DatetimeLen);SQLDBBindCol (AccessDb, 4, SQL_C_DOUBLE, &Pay, IGNORE, &Paylen);while(SQLDBFetch(AccessDb)!=IS_NO_DATA){InsertTableRows (panelHandle, PANEL_TABLE, -1, 1, VAL_USE_MASTER_CELL_TYPE);GetNumTableRows (panelHandle, PANEL_TABLE, &RowNumber);

28

Page 30: Stage Initiation Pas Fini Encore

SetTableCellAttribute (panelHandle, PANEL_TABLE, MakePoint (1,RowNumber), ATTR_CTRL_VAL,ID );SetTableCellAttribute (panelHandle, PANEL_TABLE, MakePoint (2,RowNumber), ATTR_CTRL_VAL,Name );SetTableCellAttribute (panelHandle, PANEL_TABLE, MakePoint (3,RowNumber), ATTR_CTRL_VAL,Birthday );SetTableCellAttribute (panelHandle, PANEL_TABLE, MakePoint (4,RowNumber), ATTR_CTRL_VAL,Pay );strcpy(Name,"");strcpy(Birthday,"");ID=0;Pay=0.0;}SQLDBCloseCursor (AccessDb);SQLDBResetStatement (AccessDb); //reset statment handle}

SetCtrlAttribute (panelHandle, PANEL_SQLUpdate, ATTR_DIMMED, 0);SetCtrlAttribute (panelHandle, control, ATTR_DIMMED, 1);break;}return 0;}

29

Page 31: Stage Initiation Pas Fini Encore

Pour conclure, j'ai eu un stage de qualité, et je voudrais remercier toute

l'équipe de la direction des ressources humaine et de formation

Ce stage a été très profitable pour moi. En effet, j’ai pu évaluer me

Connaissances par rapport aux besoins de l’entreprise et acquérir de nouvelles

Technologies et méthodes qui me seront utiles à l’avenir. Evidemment, j’ai dû m’adapter aux horaires de l’entreprise qui sont : 8h-12h et 13h-17h et de 8h. Tous ces facteurs m’ont permis de découvrir le monde de l’entreprise sur un plan professionnel mais aussi sur un plan humain par le travail en équipe.

En effet, j’ai eu l’occasion de rencontrer des personnes qui m’ont beaucoup aidé tant dans le travail que pour mon intégration dans l’entreprise. Ils ont pris le temps de m’expliquer toutes mes missions bien qu’ils aient également du travail. Ils m’ont fait découvrir les locaux, expliquer le fonctionnement de l’entreprise…

Je retire donc de ce stage une impression de réussite. Ce que j’ai découvert lors de celui-ci m’aidera dans mes études mais aussi dans ma vie professionnelle future.

30

Page 32: Stage Initiation Pas Fini Encore

31

Page 33: Stage Initiation Pas Fini Encore

32

Page 34: Stage Initiation Pas Fini Encore

33