1 / 27

SIVOL Système d’Information Volailles MC Batut - T Heirman

SIVOL Système d’Information Volailles MC Batut - T Heirman. Comité de pilotage : MC Batut, B. Basso Artiguères : F Dubos*, MD Bernadet, M Ruinaut PEAT : Y Baumard, J Besnard, J Delaveau, D Gourichon, N Sellier URA : C. Beaumont*, M Chabault, N Sellier 

calla
Download Presentation

SIVOL Système d’Information Volailles MC Batut - T Heirman

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SIVOL Système d’Information VolaillesMC Batut - T Heirman Comité de pilotage : MC Batut, B. Basso Artiguères : F Dubos*, MD Bernadet, M Ruinaut PEAT : Y Baumard, J Besnard, J Delaveau, D Gourichon, N Sellier URA : C. Beaumont*, M Chabault, N Sellier GABI : T Heirman, M Tixier Boichard*, A Vieaud SAGA : B Basso, R Duzert, C Marie-Etancelin, MM Richard* Depuis 2003 : 20 réunions (1 tous les 3 mois au début)

  2. Quelles données gérer ? Modélisation des données : MCD fait avec PowerAMC

  3. Jouy-en-Josas GABI PSGen (ancien GDA) PSGen E. Verrier Agathe Vieaud* Tours Génétique Factorielle Avicole Unité de Recherche Avicole PEAT URA URA GFA E. Duval M. Chabault* Garen N. Sellier*/D.Gourichon* O. Demeure Landes Station d’Amélioration Génétique des Animaux M. Ruinaut* MD Bernadet* C. Peillod SAGA C. Marie* B. Basso* PalmiPôle UEPFG G.Guy LGC F. Pitel Unité Expérimentale des Palmipèdes à Foie Gras Pour qui ? : les UE et UR *=CP Les UE dépendent des 2 départements GA et PHASE

  4. Comment ? : interface + outils terrain Saisies portables sur le terrain Unité de Recherche Unité Expérimentale Extraction des données Valorisation des données SaS Enregistrement des données Suivi d’élevage JOUY EN JOSAS CTIG Sauvegardes Oracle 10g

  5. Particularités des volailles • Beaucoup de données : • PEAT : 20 000 animaux identifiés par an • Femelles en reproduction : • GFA : 712 femelles contrôlées en individuel sur 4 mois  65796 œufs • Pas d’identification normalisée • Identification Sivol : • Espèce de l’animal (2) : canard(6), poule(8), caille(9), dinde(10) (Sidex) • Domaine de naissance (3): ART, GAV, GFA, URA • Année de naissance (4) : 2008, 2009 • Numéro de naissance (4) : boucle sur l’aile • Lot de naissance (2) : 01,02,03, .etc. (ajouté pour passer 9999) • Identification utilisée aussi par les autres UR volailles (Tours, Rhennes, LGC) • Identification électronique en cours d’élaboration (E Ricard, B Basso)

  6. Conduite par bande (cellule) Cellule collective Cellule divisée en cages Individuelle 1 2 3 4 5 6 7 8 9 10 11 Collective Elevés au sol (cellule collective) ou en cage Bâtiment 340 Bâtiment 360 Cellules 17 10 14 17 20 14 10 18 21 11 11 15 18 15 19 13 22 13 16 19 16 20

  7. IHM : Interface Homme Machine • Interface convivial créé avec les utilisateurs • Connexion via un login/mot de passe • Connexion sur une espèce et un domaine de production (autorisation) • Multi-fenêtrage • Droits différents suivant les utilisateurs • rôles Oracle  select/insert/update/delete sur les tables • Développé sous VisualStudio 2005 (Framework 2.0, langage C#) • utilisation des classes de Thierry pour BD, fonctions échangées avec Hervé et M-Hélène

  8. Menu – Opérations regroupées par thèmes

  9. Sélection : critères assez larges • Opérateur : égale, différent, in, not in, entre, vide, non vide • Pour les numériques : >, >=, <, <=

  10. Affichage des données avec clés visuelles • Touches dans la grille : comme dans Windows (en bleu foncé animaux sélectionnés) • Se positionner sur UN animal : numéro de naissance ou numéro cage (orange) • Trier les animaux : cliquer sur le titre de la colonne • Ergonomie : quand on agrandit ou diminue la forme, les colonnes sont redimensionnées dgrv.ColumnHeadersDefaultCellStyle.BackColor = frmMaquette.coulColEnTete; dgrv.RowHeadersDefaultCellStyle.BackColor = frmMaquette.coulLigneEnTete; for (int i = 0; i < dgrv.ColumnCount; i++) dgrv.Columns[i].DefaultCellStyle.BackColor = frmMaquette.coulColNePasSaisir;

  11. Actions possibles à partir d’une grille A partir de n’importe quelle grille, clic droit avec la souris Action à faire sur un ou plusieurs animaux Possible sur UN seul animal Dans toutes les grilles cmOperation.Enabled = true; menuCompter.Enabled = true; menuEnregistrer.Enabled = true; menuImprimer.Enabled = true; menuModifierReforme.Enabled = myDroit_Update; menuReactiver.Enabled = myDroit_Update; menuReformer.Enabled = myDroit_Update; menuChangerSexe.Enabled = myDroit_Update; Les droits : Insert, Update, Delete sur UNE table SELECT privilege FROM dba_tab_privs" WHERE grantee='" + myRole.ToString().ToUpper() + "'" AND table_name='" + nom_table + "'" AND privilege != 'SELECT'"

  12. Saisie terrain : de nombreuses possibilités 1- Sur boîtier de saisie PDA : Saisie de la ponte Saisie des phénotypes liés à un locus visible à œil nu Saisie de mesures diverses (abattage, morphologie, comportement, prélèvement des mâles, échantillons) 2- Automate de pesées Baléa Pesées des animaux vivants Réforme, changement de sexe Chantiers divers (abattage, .etc.) Identification électronique 3- Saisie directe par l’IHM sur PC portable : Mirages, Eclosion Jaune = à saisir

  13. Saisie de mesures diverses : exemple abattage • Avant : Extraire les animaux à mesurer, choisir une première liste de mesures • Envoyer le fichier au PDA • Charger la liste sur le boîtier • Se fait par bâtiment/cellule • Choix des mesures à faire (10 maxi) • Saisie par numéro animal ou par cage • Saisie de la mesure : Contrôles de la mesure par rapport à des bornes (orange) et à un seuil (rouge) • Listes possibles des animaux mesurés, non mesurés ou les deux avec mesures • Gestion des doubles (avertit si animal déjà mesuré) • Après : Extraire les mesures du PDA, envoyer les données au PC • Importer les données, regarder le journal (anomalies)

  14. MAJ à partir d’un fichier : souple DataGridView à 5 colonnes dgrv.Rows.Add("Domaine de naissance", "DOM_NAIS", "C", dimDomNais, 0); sql="select lib_champ,nom_champ,typ_data,dim,dec from sivol.parametre where dom_prod='" + myDomaine + "' and espece='" + myEspece + "and nom_table='" + nom_table + "';

  15. MAJ des mesures d’abattage par l ’IHM • Choisir les mesures à saisir sur les animaux • Choisir les animaux

  16. Suivi de l’élevage : liste et inventaire Extraction de données, listes, inventaires, bilans, statistiques élémentaires … Liste des pesées par animal sur une même ligne (poids en gramme, age en jour)

  17. Suivi de l’élevage : résultats de ponte Après une éclosion : Exemple : série de ponte

  18. Lien avec autres bases : Sidex Peut se faire par cellule ou à partir d’un fichier • Il créé le fichier au format Sidex • Il met un drapeau à chaque animal sélectionné pour indiquer que l’animal est parti dans Sidex

  19. Lien avec autres bases : Gemma, BarCode • Pour Gemma : Extraction des généalogies et des tubes pour les échantillons prélevés Il met un drapeau à chaque animal sélectionné pour indiquer que l’animal a été exporté dans Gemma • Pour BarCode : feuille de route FR6 et FR7

  20. Remontées des anciennes généalogies GFA : de Niakwa -> reconstruire les généalogies Lignées de André Bordas : Thierry a commencé Lignées de Michèle Tixier Boichard : Thierry a commencé Lignées de Marie-Hélène Pinnard : non demandeuse Francis Minvielle (cailles) : non demandeur GAV : Lignées BC, Salmonelles (AIL), D+/D- reste quelques lignées à faire ART : Palmi  Sivol : à faire Sivol IHM Finir demandes des utilisateurs Visual Studio 2008 (Framework 3) Boîtier de saisie : Tester en grandeur nature Sivol_Mesure Demande : charger un boîtier avec les animaux à réformer puis valider ou pas sur le terrain MAJ des docs : http://germinal.toulouse.inra.fr/~mcbatut/ Formations Futur

  21. Lié à Oracle ? Oui et non • Utilisation de la classe clsDataBase (T. Heirman) • Classe clsOracle pour l’IHM : OracleConnection, OracleCommand, OracleDataAdapter, OracleDataReader, OracleTransaction • Classe clsSQLServeur pour .Net sur PDA : SqlConnection, SqlCommand, SqlDataAdapter, SqlDataReader, SqlTransaction • Utilisation de fonction pour les dates sql_where = sql_where + " and B.d_nais = "+frmMaquette.to_good_format(dtpD_Nais1.Value.ToString(),frmMaquette.TYP_DATA_DATE); • Liés à Oracle • Triggers • PL/SQL : mise à jour de la ponte, des pesées et des phénotypes • Dictionnaire de données : les droits, le module d’extraction de données

  22. Utilisation de la classe clsDataBase namespace INRA_Databases { public abstract class clsDataBase { #region Lecture/Modification des attributs de classe public abstract string DataSource {get; set; } public abstract string User {get; set; } public abstract string Password {get; set; } #endregion #region Ouverture/Fermeture de la base de données public abstract bool bdOpen(); public abstract bool bdOpen(string ConnexionString); public abstract bool bdClose(); #endregion #region SELECT... FROM... , SELECT... FROM... WHERE... public abstract bool SQLResult_In_Dataset(string SQL); public abstract bool SQLResult_In_Dataset(DataSet ds_gen, string SQL, stringnomTable); public abstract Object[,] SQLResult_in_Array(string SQL); public abstract Int64 SQLCount(string SQL); #endregion #region INSERT, UPDATE, DELETE public abstract bool ExecuteNonQuery(string SQL); #endregion } }

  23. Initialisations public const string dbDataSource="sivol"; static public int iDB_USED = 1; // Oracle // public int iDB_USED = 2; // MySQL // public int iDB_USED = 3; // PostGreSQL static public int iDB_USED = 4; // SQLServeur static public string myIdUser = ""; static public string myPassword = ""; static public string myEspece = ""; static public string myDomaine = ""; using INRA_Databases; namespace SIVOL { public class frmListerAnimaux : System.Windows.Forms.Form{ private DataSet ds_gen; private clsDataBase ora_gen; … private void InitialiseDataSet(){ ds_gen = new DataSet(); // Connexion à la base ora_gen = frmMaquette.InitDescripteurBD();} } public static clsDataBase InitDescripteurBD() { clsDataBase myDB = null; switch (iDB_USED){case 1: myDB = new clsOracle();bIdentificationRequise = true;break; case 4: myDB = clsSQLServer();bIdentificationRequise = false; break;} sChaineConnexion = myDB.ConnectionStringBuilder(dbDataSource, myIdUser, myPassword); try{ bConnexionEtablie = myDB.bdOpen(sChaineConnexion); } catch { myDB = null; }

  24. DataGridView : lié à une source de données - Le dataset ds_gen contient une collection de Tables (1 dataset par forme) string sql= " select .. from .. where .. order by.. "; string nomTable = "Cage"; if (ora_gen.SQLResult_In_Dataset(ds_gen, sql, nomTable)) { // Afficher les données dgrvCage.DataSource = ds_gen.Tables[nomTable]; Afficher_TitreColonnes(dgrvCage); - Travail sur le DataGridView for (int iLigne = 0; iLigne < dgrvCage.RowCount; iLigne++) { if (dgrvCage.Rows[iLigne].Selected) { campagne = dgrvCage[col_campagne, iLigne].Value.ToString(); batiment = dgrvCage[col_batiment, iLigne].Value.ToString(); cellule = dgrvCage[col_cellule, iLigne].Value.ToString(); cage = dgrvCage[col_cage, iLigne].Value.ToString(); intra_cage = dgrvCage[col_intra_cage, iLigne].Value.ToString(); ...

  25. DataGridView Peut être construit en conception : DataGridViewButtonColumn, DataGridViewCheckBoxColumn, DatGridViewComboBoxColumn, DataGridViewTextBoxColumn Peut être construit en dynamique for (int iColonne = 0; iColonne < nb_colonnes; iColonne++) { DataGridViewTextBoxColumn nouvelle_colonne = new DataGridViewTextBoxColumn(); dgrv.Columns.Add(nouvelle_colonne); // Attention j'ajoute 1 pour avoir col1, col2, .. . no_colonne = iColonne + 1; dgrv.Columns[iColonne].Name = "Col" + no_colonne.ToString(); dgrv.Columns[iColonne].HeaderText = "Col" + no_colonne.ToString(); dgrv.Columns[iColonne].Width = 80; }

  26. DataGridView : contrôle sur une colonne private void dgrvMirIJ_CellEnter(object sender, DataGridViewCellEventArgs e) { int col; switch (cbOperation.SelectedIndex){ case 0: //Mirage1 if (dgrvMir1IJ.CurrentCell != null && dgrvMir1IJ.CurrentCell.Value != null) { col=frmMaquette.Chercher_NoColonne_DataGridView_ParSonNom(dgrvMir1IJ,"CD_MIRAGE1"); if (dgrvMir1IJ.CurrentCell.ColumnIndex == col) MIR1IJ_OLD = (string)dgrvMir1IJ.CurrentCell.Value;} break; … private void dgrvMirIJ_CellValidated(object sender, DataGridViewCellEventArgs e) { // valeurs acceptées de 1 à 4 pour le code du 1er mirage int col; switch (cbOperation.SelectedIndex){ case 0: //Mirage1 if (dgrvMir1IJ.CurrentCell != null) { col = frmMaquette.Chercher_NoColonne_DataGridView_ParSonNom(dgrvMir1IJ,"CD_MIRAGE1"); if (dgrvMir1IJ.CurrentCell.ColumnIndex == col) { if (dgrvMir1IJ.CurrentCell.Value != null && int.Parse((string)dgrvMir1IJ.CurrentCell.Value) > 4) dgrvMir1IJ.CurrentCell.Value = MIR1IJ_OLD;} } break;

  27. Merci de votre attention

More Related