Browse Source

Modification de la structure de la bdd :

- séparation données consult et resultats (plus facile pour MàJ)
- définition des DEFAULTs

Import dans la BDD fini !
master
Maxime Wack 11 years ago
parent
commit
3990574a4b
3 changed files with 50 additions and 24 deletions
  1. +40
    -15
      CosMoS/bdd.cpp
  2. +1
    -0
      CosMoS/bdd.h
  3. +9
    -9
      Sante_Pub.workspace.session

+ 40
- 15
CosMoS/bdd.cpp View File

@@ -21,8 +21,9 @@ void class_bdd::createEmpty()
{
rc = 0;
rc += sqlite3_open_v2(_C(path), &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
rc += sqlite3_exec(db, "CREATE TABLE Consult(id INTEGER PRIMARY KEY ASC, n_dossier INTEGER UNIQUE, nom VARCHAR(50), prenom VARCHAR(50), responsable VARCHAR(100), consultant VARCHAR(50), theme TEXT, etablissement VARCHAR(100), travail VARCHAR(50), date_cs DATE, publi_prevue BOOLEAN, publi BOOLEAN, cs_associe BOOLEAN, publi_CHU BOOLEAN, nb_result INT, id_results TEXT);", NULL, NULL, NULL);
rc += sqlite3_exec(db, "CREATE TABLE Result(id INTEGER PRIMARY KEY, titre TEXT, auteurs TEXT, lien VARCHAR(50), date_publi DATE);", NULL, NULL, NULL);
rc += sqlite3_exec(db, "CREATE TABLE Consult(id INTEGER PRIMARY KEY ASC, n_dossier INTEGER, nom VARCHAR(50), prenom VARCHAR(50), responsable VARCHAR(100), consultant VARCHAR(50), theme TEXT, etablissement VARCHAR(100), travail VARCHAR(50), date_cs DATE, publi_prevue BOOLEAN);", NULL, NULL, NULL);
rc += sqlite3_exec(db, "CREATE TABLE Result(id INTEGER PRIMARY KEY ASC, publi BOOLEAN DEFAULT 0, cs_associe BOOLEAN DEFAULT 0, publi_CHU BOOLEAN DEFAULT 0, nb_result INTEGER DEFAULT 0, id_result TEXT DEFAULT \"\");", NULL, NULL, NULL);
rc += sqlite3_exec(db, "CREATE TABLE Publi(id INTEGER PRIMARY KEY, titre TEXT, auteurs TEXT, lien VARCHAR(50), date_publi DATE);", NULL, NULL, NULL);
rc += sqlite3_exec(db, "CREATE TABLE Correc(orig TEXT PRIMARY KEY, dest TEXT);", NULL, NULL, NULL);
if (rc)
{
@@ -35,7 +36,16 @@ void class_bdd::createEmpty()

void class_bdd::import(const wxString& filename)
{
rc = 0;
int size = 0;
int progress = 0;
FILE * importfile = fopen(_C(filename), "r");
fseek(importfile, 0, SEEK_END);
size = ftell(importfile);
rewind(importfile);
wxProgressDialog progress_dialog("Import", "Import de la base...", size);
char c;
bool inquote = false;
bool firstline = true;
@@ -48,6 +58,7 @@ void class_bdd::import(const wxString& filename)
do
{
c = fgetc(importfile);
progress++;
if (c == '"')
{
if (!inquote)
@@ -60,33 +71,47 @@ void class_bdd::import(const wxString& filename)
}while (((c != ';') && (!inquote)) || inquote);
item[i] = item[i].BeforeLast(wxUniChar(';'));
}
item[21]="";
item[22]="";
do
{
c = fgetc(importfile);
progress++;
if ((c != '\n') && (c != EOF))
item[21] << c;
item[22] << c;
}while ((c != '\n') && (c != EOF));
if (!firstline)
{
wxString requete = "INSERT OR REPLACE INTO Consult (id, n_dossier, nom, prenom, responsable, consultant, theme, etablissement, travail, date_cs, publi_prevue) VALUES (";
requete << item[0] + ", ";
requete << item[1] + ", ";
requete << item[3] + ", ";
requete << item[4] + ", ";
requete << item[19] + ", ";
requete << item[20] + ", ";
requete << item[13] + ", ";
requete << item[7] + ", ";
requete << item[12] + ", ";
requete << item[21] + ", ";
requete << item[18] + ", ";
if (item[1].IsSameAs(""))
requete << "NULL, ";
else
requete << item[1] + ", ";
requete << "\"" + item[3] + "\", ";
requete << "\"" + item[4] + "\", ";
requete << "\"" + item[19] + "\", ";
requete << "\"" + item[20] + "\", ";
requete << "\"" + item[13] + "\", ";
requete << "\"" + item[7] + "\", ";
requete << "\"" + item[12] + "\", ";
requete << "\"" + item[21] + "\", ";
if (item[18].IsSameAs("VRAI", false))
requete << "1";
else
requete << "0";
requete << ");";
rc = sqlite3_exec(db, requete, NULL, NULL, NULL);
rc += sqlite3_exec(db, requete, NULL, NULL, NULL);
requete = "INSERT OR IGNORE INTO Result (id) VALUES (";
requete << item[0] + ");";
rc += sqlite3_exec(db, requete, NULL, NULL, NULL);
}
firstline = false;
progress_dialog.Update(progress);
}while (c != EOF);
fclose(importfile);
progress_dialog.Update(size);
if (rc)
wxMessageBox("Erreur lors de l'import", "Erreur", wxOK | wxICON_ERROR);
}

+ 1
- 0
CosMoS/bdd.h View File

@@ -4,6 +4,7 @@
#include <wx/filefn.h>
#include <cstdio>
#include <wx/msgdlg.h>
#include <wx/progdlg.h>
#include <sqlite3.h>

#ifdef __WXGTK__


+ 9
- 9
Sante_Pub.workspace.session View File

@@ -17,13 +17,13 @@
</TabInfo>
<TabInfo>
<wxString Value="G:\Commun\Etudiants\Maxime W\Projets\CosMoS\cosmos.cpp" Name="FileName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="6" Name="FirstVisibleLine"/>
<int Value="11" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
</TabInfo>
<TabInfo>
<wxString Value="G:\Commun\Etudiants\Maxime W\Projets\CosMoS\config.cpp" Name="FileName"/>
<int Value="29" Name="FirstVisibleLine"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="1" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
</TabInfo>
@@ -35,32 +35,32 @@
</TabInfo>
<TabInfo>
<wxString Value="G:\Commun\Etudiants\Maxime W\Projets\CosMoS\options.cpp" Name="FileName"/>
<int Value="21" Name="FirstVisibleLine"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="6" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
</TabInfo>
<TabInfo>
<wxString Value="G:\Commun\Etudiants\Maxime W\Projets\CosMoS\bdd.h" Name="FileName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="28" Name="CurrentLine"/>
<int Value="3" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
</TabInfo>
<TabInfo>
<wxString Value="G:\Commun\Etudiants\Maxime W\Projets\CosMoS\bdd.cpp" Name="FileName"/>
<int Value="15" Name="FirstVisibleLine"/>
<int Value="42" Name="CurrentLine"/>
<int Value="46" Name="FirstVisibleLine"/>
<int Value="64" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
</TabInfo>
<TabInfo>
<wxString Value="G:\Commun\Etudiants\Maxime W\Projets\CosMoS\cosmosGUI.h" Name="FileName"/>
<int Value="18" Name="FirstVisibleLine"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="7" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
</TabInfo>
<TabInfo>
<wxString Value="G:\Commun\Etudiants\Maxime W\Projets\CosMoS\cosmosGUI.cpp" Name="FileName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="46" Name="CurrentLine"/>
<int Value="7" Name="FirstVisibleLine"/>
<int Value="27" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
</TabInfo>
</TabInfoArray>


Loading…
Cancel
Save