Browse Source

Parsing du fichier d'import !!

master
Maxime Wack 11 years ago
parent
commit
d39ddf759f
3 changed files with 56 additions and 10 deletions
  1. +54
    -8
      CosMoS/bdd.cpp
  2. +1
    -1
      CosMoS/bdd.h
  3. +1
    -1
      CosMoS/cosmosGUI.cpp

+ 54
- 8
CosMoS/bdd.cpp View File

@@ -21,7 +21,7 @@ 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 AUTOINCREMENT, 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 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 Correc(orig TEXT PRIMARY KEY, dest TEXT);", NULL, NULL, NULL);
if (rc)
@@ -35,12 +35,58 @@ void class_bdd::createEmpty()

void class_bdd::import(const wxString& filename)
{
wxTextFile importfile;
if (!importfile.Open(filename))
wxMessageBox("Erreur lors du chargement du fichier", "Erreur", wxICON_ERROR | wxOK);
else
FILE * importfile = fopen(_C(filename), "r");
char c;
bool inquote = false;
bool firstline = true;
wxString item[23];
do
{
wxMessageBox(wxString::Format("%i",importfile.GetLineCount()), "Nb lignes", wxOK);
importfile.Close();
}
for (int i=0; i<22; i++)
{
item[i]="";
do
{
c = fgetc(importfile);
if (c == '"')
{
if (!inquote)
inquote = true;
else
inquote = false;
}
if (c != '"')
item[i] << c;
}while (((c != ';') && (!inquote)) || inquote);
item[i] = item[i].BeforeLast(wxUniChar(';'));
}
item[21]="";
do
{
c = fgetc(importfile);
if ((c != '\n') && (c != EOF))
item[21] << 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] + ", ";
requete << ");";
rc = sqlite3_exec(db, requete, NULL, NULL, NULL);
}
firstline = false;
}while (c != EOF);
fclose(importfile);
}

+ 1
- 1
CosMoS/bdd.h View File

@@ -2,7 +2,7 @@
#define __bdd__

#include <wx/filefn.h>
#include <wx/textfile.h>
#include <cstdio>
#include <wx/msgdlg.h>
#include <sqlite3.h>



+ 1
- 1
CosMoS/cosmosGUI.cpp View File

@@ -25,7 +25,7 @@ cosmosGUI::cosmosGUI( wxWindow* parent, wxWindowID id, const wxString& title, co
menu_Fichier = new wxMenu();
wxMenuItem* menuitem_Import;
menuitem_Import = new wxMenuItem( menu_Fichier, wxID_OPEN, "Importer base", wxEmptyString, wxITEM_NORMAL );
menuitem_Import->SetBitmaps(wxBitmap(import_xpm));
menuitem_Import->SetBitmap(wxBitmap(import_xpm));
menu_Fichier->Append( menuitem_Import );
wxMenuItem* menuitem_Export;


Loading…
Cancel
Save