Upload
oda-barbot
View
115
Download
2
Embed Size (px)
Citation preview
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
SIVOL Système d’Information Volailles
MC Batut - T Heirman
Comité de pilotage : MC Batut, B. BassoArtiguères : F Dubos*, MD Bernadet, M RuinautPEAT : Y Baumard, J Besnard, J Delaveau, D Gourichon, N SellierURA : C. Beaumont*, M Chabault, N SellierGABI : T Heirman, M Tixier Boichard*, A VieaudSAGA : B Basso, R Duzert, C Marie-Etancelin, MM Richard*
Depuis 2003 : 20 réunions (1 tous les 3 mois au début)
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Quelles données gérer ?
Modélisation des données : MCD fait avec PowerAMC
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Tours
GFA URA
Génétique Factorielle Avicole
N. Sellier*/D.Gourichon*
PEAT
Pour qui ? : les UE et UR
Les UE dépendent des 2 départements GA et PHASE
M. Ruinaut*MD Bernadet*C. Peillod
Landes
UEPFG
Unité Expérimentale des Palmipèdes à Foie GrasG.Guy
PalmiPôle
*=CP
Garen O. Demeure
F. PitelLGC
C. Marie*B. Basso*SAGA
Station d’Amélioration Génétique des Animaux
PSGen
Jouy-en-Josas GABI PSGen (ancien GDA)
E. VerrierAgathe Vieaud*
E. DuvalM. Chabault*
Unité de Recherche Avicole
URA
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
JOUY EN JOSAS CTIG
Unité Expérimentale
Unité de Recherche
Saisies portables sur le terrain
Enregistrement des donnéesSuivi d’élevage
Sauvegardes
Extraction des donnéesValorisation des donnéesSaS
Comment ? : interface + outils terrain
Oracle 10g
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Particularités des volailles
Beaucoup de données : PEAT : 20 000 animaux identifiés par anFemelles en reproduction :
GFA : 712 femelles contrôlées en individuel sur 4 mois 65796 œufs
Pas d’identification normaliséeIdentification Sivol :
Espèce de l’animal (2) : canard(6), poule(8), caille(9), dinde(10) (Sidex)Domaine de naissance (3): ART, GAV, GFA, URAAnnée de naissance (4) : 2008, 2009Numéro de naissance (4) : boucle sur l’aileLot 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)
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Conduite par bande (cellule)
Bâtiment 340 Bâtiment 360
1 2 3 4 5 6 7 8 9 10 11
Cellule divisée en cages
Individuelle
Collective
10
11
13
14
15
16
17
18
19
20
10
11
13
14
15
16
17
18
19
20
21
22
Cellules
Cellule collective
Elevés au sol (cellule collective) ou en cage
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
• 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
IHM : Interface Homme Machine
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Menu – Opérations regroupées par thèmes
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Sélection : critères assez larges
Opérateur : égale, différent, in, not in, entre, vide, non videOpérateur : égale, différent, in, not in, entre, vide, non videPour les numériques : >, >=, <, <=Pour les numériques : >, >=, <, <=
Opérateur : égale, différent, in, not in, entre, vide, non videOpérateur : égale, différent, in, not in, entre, vide, non videPour les numériques : >, >=, <, <=Pour les numériques : >, >=, <, <=
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Affichage des données avec clés visuelles
Touches dans la grille : comme dans Windows (en bleu foncé animaux sélectionnés)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)Se positionner sur UN animal : numéro de naissance ou numéro cage (orange)Trier les animaux : cliquer sur le titre de la colonneTrier les animaux : cliquer sur le titre de la colonneErgonomie : quand on agrandit ou diminue la forme, les colonnes sont redimensionnéesErgonomie : quand on agrandit ou diminue la forme, les colonnes sont redimensionnées
Touches dans la grille : comme dans Windows (en bleu foncé animaux sélectionnés)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)Se positionner sur UN animal : numéro de naissance ou numéro cage (orange)Trier les animaux : cliquer sur le titre de la colonneTrier les animaux : cliquer sur le titre de la colonneErgonomie : quand on agrandit ou diminue la forme, les colonnes sont redimensionnéesErgonomie : 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;
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Actions possibles à partir d’une grille
Action à faire sur un ou plusieurs animauxAction à faire sur un ou plusieurs animauxAction à faire sur un ou plusieurs animauxAction à faire sur un ou plusieurs animaux
Possible sur UN seul animalPossible sur UN seul animalPossible sur UN seul animalPossible sur UN seul animal
Dans toutes les grillesDans toutes les grillesDans toutes les grillesDans toutes les grilles
A partir de n’importe quelle grille, clic droit avec la sourisA partir de n’importe quelle grille, clic droit avec la sourisA partir de n’importe quelle grille, clic droit avec la sourisA partir de n’importe quelle grille, clic droit avec la souris
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'"
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
2- Automate de pesées Baléa
Identification électronique
Saisie terrain : de nombreuses possibilités
1- Sur boîtier de saisie PDA :
3- Saisie directe par l’IHM sur PC portable : Mirages, Eclosion
Pesées des animaux vivantsRéforme, changement de sexeChantiers divers (abattage, .etc.)
Saisie de la ponteSaisie des phénotypes liés à un locus visible à œil nuSaisie de mesures diverses (abattage, morphologie, comportement, prélèvement des mâles, échantillons)
Jaune = à saisir
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Saisie de mesures diverses : exemple abattage
Se fait par bâtiment/celluleChoix des mesures à faire (10 maxi)Saisie par numéro animal ou par cageSaisie 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 mesuresGestion des doubles (avertit si animal déjà mesuré)
Avant : Extraire les animaux à mesurer, choisir une première liste de mesuresEnvoyer le fichier au PDACharger la liste sur le boîtier
Après : Extraire les mesures du PDA, envoyer les données au PCImporter les données, regarder le journal (anomalies)
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
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 + "';
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
MAJ des mesures d’abattage par l ’IHM
Choisir les mesures à saisir sur les animauxChoisir les animaux
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Suivi de l’élevage : liste et inventaire
Liste des pesées par animal sur une même ligne (poids en gramme, age en jour)
Extraction de données, listes, inventaires, bilans, statistiques élémentaires …
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Suivi de l’élevage : résultats de ponte
Exemple : série de ponteAprès une éclosion :
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Lien avec autres bases : Sidex
Il créé le fichier au format SidexIl met un drapeau à chaque animal sélectionné pour indiquer que l’animal est parti dans Sidex
Peut se faire par cellule ou à partir d’un fichier
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Lien avec autres bases : Gemma, BarCodePour Gemma : Extraction des généalogies et des tubes pour les échantillons prélevés
Pour BarCode : feuille de route FR6 et FR7
Il met un drapeau à chaque animal sélectionné pour indiquerque l’animal a été exporté dans Gemma
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
• 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
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
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 datessql_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
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Utilisation de la classe clsDataBasenamespace INRA_Databases{
public abstract class clsDataBase{
#region Lecture/Modification des attributs de classepublic 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éespublic 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, string nomTable); 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
}}
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Initialisations public const string dbDataSource="sivol";static public int iDB_USED = 1; // Oracle// public int iDB_USED = 2; // MySQL// public int iDB_USED = 3; // PostGreSQLstatic public int iDB_USED = 4; // SQLServeur
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 baseora_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; }
static public string myIdUser = "";static public string myPassword = "";static public string myEspece = "";static public string myDomaine = "";
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
DataGridView : lié à une source de données
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();...
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);
- Le dataset ds_gen contient une collection de Tables (1 dataset par forme)
- Travail sur le DataGridView
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
DataGridViewPeut ê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;}
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
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;
DataGridView : contrôle sur une colonne
ALIMENTATION
AGRICULTURE
ENVIRONNEMENT
Lacanau 19-20 Mai 2009
Merci de votre attention