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

Slides:



Advertisements
Présentations similaires
VML-MVL La discothèque virtuelle : le projet VML et la numérisation des collections musicales de Radio-Canada/CBC Présentation le 23 octobre 2009 au congrès.
Advertisements

Est Ouest Sud 11 1 Nord 1 Individuel 15 ou 16 joueurs 12 rondes - 24 étuis Laval Du Breuil Adstock, Québec I série détuis entre chaque table 5.
FORGES LES EAUX Forges les Eaux avril 2009.
Commission Jeune Présentation CJ 53 Projets CJ 53 Actions organisées Prochaines Actions.
Approche graphique du nombre dérivé
Qui a le nombre qui vient après 8 ?
INDICATEURS STATISTIQUES ET DEVELOPPEMENT TECHNOLOGIQUE
Classe : …………… Nom : …………………………………… Date : ………………..
1 ROP 6 Clermont Ferrand Bordeaux Toulouse Journées des 16,17 et 18 mars 2009 A Clermont Ferrand.
1 1 Momentum. 2 2 Tout objet en mouvement continuera son mouvement tant que rien nentrave sa progression.
Est Ouest Sud 11 1 Nord 1 Individuel 13 joueurs 13 rondes - 26 étuis Laval Du Breuil Adstock, Québec Allez à 2 Est I séries détuis entre les tables.
Est Ouest Sud 11 1 Nord 1 Individuel 17 joueurs 12 rondes - 24 étuis Laval Du Breuil Adstock, Québec I série détuis entre chaque table 5 séries.
Est Ouest Sud 11 1 Nord 1 Individuel 23 ou 24 joueurs 12 rondes - 24 étuis Laval Du Breuil Adstock, Québec 2 série détuis entre les tables 2 et 3 1 série.
Sud Ouest Est Nord Individuel 14 joueurs 14 rondes - 28 étuis
Sud Ouest Est Nord Individuel 12 joueurs 11 rondes - 22 étuis
Les Prepositions.
Pays des Vallons de Vilaine
JXDVDTEK – Une DVDthèque en Java et XML
A L I M E N T A T I O N A G R I C U L T U R E E N V I R O N N E M E N T SIDEx SIDEx Informatique et Automatismes.
Présentation de l’application « Livret personnel de compétences »
ACCESS Découverte.
Épreuve de bonne conduite
CONGE GRAVE MALADIE SIMULATION
Défi écriture BEF Couverture. Défi écriture BEF Page 1.
Atelier Portail SAP Durée : 2h.
Webex.
Bilan Hydrologique de la Morcille Réunion SAAM 20 Septembre 2010.
Interface Homme Machine IHM Pro
Gestion de la communication par établissement sur le site ville
Quel est cet astre au comportement si curieux ?
Cahier de bord Niveau 2012/2013.
Université Paul Sabatier - Toulouse 3 - Département de GMP Enquête Insertion Professionnelle – Promotion
Développement d’applications web
Formation Centra - GDE.
CALENDRIER PLAYBOY 2020 Cliquez pour avancer.
MANUEL : ENREGISTREMENT DES VACCINATIONS FIEVRE Q DANS SANITEL
Les 21 secteurs de la formation professionnelle
La haute tour sombre 3 Des actions
Introduction aux plates formes
S.I. Ruminants : état d’avancement Séminaire CATI SICPA 2013
UML F. Laperruque INRA – SAGA CATI SICPA.
Conseil Administration AFRAC – 2 décembre Toulouse 1 Fermes de références Palmipèdes à foie gras Synthèse régionale – Midi Pyrénées Exercice
L’utilisation des bases de données
Démarche qualité dans le secteur Médico-social
Test bilan de calcul mental N°1 :
CAssiopée, un système de vidéosurveillance bancaire
L’étrange ballet de la planète MARS
Notre calendrier français MARS 2014
C'est pour bientôt.....
OPTIMA, 6 novembre 2008, BnF 1 un outil daide à la transcription Thomas PALFRAY Stéphane NICOLAS Thierry PAQUET L aboratoire d I nformatique, T raitement.
Veuillez trouver ci-joint
SIVOL Système d’Information Volailles MC Batut - T Heirman
SUJET D’ENTRAINEMENT n°4
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
1 Modèle pédagogique d’un système d’apprentissage (SA)
Introduction.
10 paires -. 9 séries de 3 étuis ( n° 1 à 27 ) 9 positions à jouer 5 tables Réalisé par M..Chardon.
CALENDRIER-PLAYBOY 2020.
USAM BRIDGE H O W E L L -CLASSIQUE
9 paires séries de 3 étuis ( n° 1 à 27 )
Projet de stage d’année IIR4 sous le thème:
Quel est l’intérêt d’utiliser le diagramme de Gantt dans la démarche de projet A partir d’un exemple concret, nous allons pouvoir exploiter plusieurs parties.
Les Chiffres Prêts?
1. ________________________ 2. ________________________ 3. ________________________ 4. ________________________ 5. ________________________ 6. ________________________.
Geedoc (Gestion des Elevages Expérimentaux Ovins/Caprins)
04 et 05 octobre 2012Geedoc : présentation UE La Motte GEEDOC Gestion des Elevages Expérimentaux Ovins/Caprins Alain Gaillard  MC Batut (Juillet 2011)
21 février 2013Geedoc : présentation UE Grignon GEEDOC Gestion des Elevages Expérimentaux Ovins/Caprins Alain Gaillard  MC Batut (Juillet 2011) GA : Langlade.
GEEDOC Gestion des Elevages Expérimentaux Ovins/Caprins
Transcription de la présentation:

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

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

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

Saisies portables sur le terrain 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

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)

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

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

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

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

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;

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'"

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

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)

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 + "';

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

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)

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

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

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

Futur 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

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

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(); #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, string nomTable); public abstract Object[,] SQLResult_in_Array(string SQL); public abstract Int64 SQLCount(string SQL); #region INSERT, UPDATE, DELETE public abstract bool ExecuteNonQuery(string SQL); }

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

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

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

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 case 0: //Mirage1 if (dgrvMir1IJ.CurrentCell != null) col = frmMaquette.Chercher_NoColonne_DataGridView_ParSonNom(dgrvMir1IJ,"CD_MIRAGE1"); if (dgrvMir1IJ.CurrentCell.Value != null && int.Parse((string)dgrvMir1IJ.CurrentCell.Value) > 4) dgrvMir1IJ.CurrentCell.Value = MIR1IJ_OLD; } }

Merci de votre attention