/[H6]/MySQLLayer.cpp
ViewVC logotype

Diff of /MySQLLayer.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 41 by torben, Tue Sep 5 12:50:38 2006 UTC revision 56 by torben, Tue Sep 12 10:16:06 2006 UTC
# Line 6  Line 6 
6  #include ".\MySQLLayer.h"  #include ".\MySQLLayer.h"
7    
8    
9  MySQLLayer::MySQLLayer(void)  MySQLLayer::MySQLLayer(ConfigFile &config)
10  {  {
11          db.OpenEx("ODBC;Description=asd;DRIVER=MySQL ODBC 3.51 Driver;SERVER=172.16.11.25; user=gruppe2;password=1337",CDatabase::noOdbcDialog);          CString dsn;
12          db.ExecuteSQL("USE Gruppe2");          dsn.Format("ODBC;Description=asd;DRIVER=MySQL ODBC 3.51 Driver;SERVER=%s;user=%s;password=%s", config.host, config.username, config.password);
13            db.OpenEx(dsn, CDatabase::noOdbcDialog);
14    
15            CString sql;
16            sql.Format("USE %s", config.database);
17            db.ExecuteSQL( sql );
18  }  }
19    
20  MySQLLayer::~MySQLLayer(void)  MySQLLayer::~MySQLLayer(void)
# Line 209  vector<Equipment> MySQLLayer::GetEquipme Line 214  vector<Equipment> MySQLLayer::GetEquipme
214  Equipment MySQLLayer::GetEquipment(CString wantBarcode)  Equipment MySQLLayer::GetEquipment(CString wantBarcode)
215  {  {
216    
217          CString barcode,name,description,placement,status;          CString barcode,name,description,placement,status,statusid;
218    
219          CString SQL;          CString SQL;
220    
# Line 217  Equipment MySQLLayer::GetEquipment(CStri Line 222  Equipment MySQLLayer::GetEquipment(CStri
222    
223          Equipment e;          Equipment e;
224    
225          SQL.Format((CString)"SELECT Stregkode,Navn,Udstyr.Beskrivelse,Placering,Status.Beskrivelse FROM Udstyr " +          SQL.Format((CString)"SELECT Stregkode,Navn,Udstyr.Beskrivelse,Placering,Status.Beskrivelse,Udstyr.Status FROM Udstyr " +
226                  "INNER JOIN Status ON Udstyr.Status = Status.StatusID Where (Stregkode = '%s')", wantBarcode);                  "INNER JOIN Status ON Udstyr.Status = Status.StatusID Where (Stregkode = '%s')", wantBarcode);
227          CRecordset rs(&db);          CRecordset rs(&db);
228          rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);          rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);
# Line 228  Equipment MySQLLayer::GetEquipment(CStri Line 233  Equipment MySQLLayer::GetEquipment(CStri
233                  rs.GetFieldValue(2,description);                  rs.GetFieldValue(2,description);
234                  rs.GetFieldValue(3,placement);                  rs.GetFieldValue(3,placement);
235                  rs.GetFieldValue(4,status);                  rs.GetFieldValue(4,status);
236                    rs.GetFieldValue(5,statusid);
237    
238                  e.barcode = barcode;                  e.barcode = barcode;
239                  e.name = name;                  e.name = name;
240                  e.description = description;                  e.description = description;
241                  e.placement = placement;                  e.placement = placement;
242                  e.status = status;                  e.status = status;
243                    e.statusid = atoi( statusid );
244    
245                    rs.Close();
246    
247                    //fill Equipment::checkouts
248                    
249                    SQL = "SELECT Udlån.StartDato, Udlån.Afleveringsdato,Udlån.Antaldage, Person.Initialer\
250                                    FROM Udlån\
251                                    INNER JOIN Person ON Udlån.PersonID = Person.PersonID ";
252                    SQL += "WHERE Udlån.Stregkode = " + barcode + " ORDER BY STARTDATO DESC LIMIT 10";
253                    CRecordset rs(&db);
254                    rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);
255                    if (rs.GetRecordCount()>0) {
256                            rs.MoveFirst();
257                            while ( !rs.IsEOF() ) {
258                                    Checkout check;
259                                    rs.GetFieldValue((short)0, check.startdate);
260                                    rs.GetFieldValue(1, check.enddate);
261                                    rs.GetFieldValue(2, check.numdays);
262                                    rs.GetFieldValue(3, check.inits);
263    
264                                    e.checkouts.push_back(check);
265                                    rs.MoveNext();
266                            }
267                    }
268                    rs.Close();
269                                    
270                    // fill Equipment::reservations
271                    SQL = "SELECT Resevation.ResevationID, Resevation.StartDato,  Person.Initialer\
272                                    FROM Resevation\
273                                    INNER JOIN Person ON Resevation.PersonID = Person.PersonID ";
274                    SQL += "WHERE Resevation.Stregkode = " + barcode + " ORDER BY STARTDATO ASC";
275                    
276                    rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);
277                    if (rs.GetRecordCount()>0) {
278                            rs.MoveFirst();
279                            while ( !rs.IsEOF() ) {
280                                    Reservation res;
281                                    rs.GetFieldValue((short)0, res.reservationID);
282                                    rs.GetFieldValue(1, res.startdate);
283                                    rs.GetFieldValue(2, res.inits);
284    
285                                    e.reservations.push_back(res);
286                                    rs.MoveNext();
287                            }
288                    }
289                    rs.Close();
290          }          }
         rs.Close();  
291          return e;          return e;
292  }  }
293    
# Line 318  vector<Equipment> MySQLLayer::Search(CSt Line 370  vector<Equipment> MySQLLayer::Search(CSt
370                  rs.Close();                  rs.Close();
371          }          }
372    
         // now I have the equipment rows the user asked for, now I need some more checkout and  
         // reservation data for each piece of equipment  
   
         for (int i=0; i<buffer.size(); i++) {  
                 //fill Equipment::checkouts  
                   
                 SQL = "SELECT Udlån.StartDato, Udlån.Afleveringsdato,Udlån.Antaldage, Person.Initialer\  
                                 FROM Udlån\  
                                 INNER JOIN Person ON Udlån.PersonID = Person.PersonID ";  
                 SQL += "WHERE Udlån.Stregkode = " + buffer[i].barcode + " ORDER BY STARTDATO DESC LIMIT 10";  
                 CRecordset rs(&db);  
                 rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);  
                 if (rs.GetRecordCount()>0) {  
                         rs.MoveFirst();  
                         while ( !rs.IsEOF() ) {  
                                 Checkout check;  
                                 rs.GetFieldValue((short)0, check.startdate);  
                                 rs.GetFieldValue(1, check.enddate);  
                                 rs.GetFieldValue(2, check.numdays);  
                                 rs.GetFieldValue(3, check.inits);  
   
                                 buffer[i].checkouts.push_back(check);  
                                 rs.MoveNext();  
                         }  
                 }  
                 rs.Close();  
                                   
                 // fill Equipment::reservations  
                 SQL = "SELECT Resevation.ResevationID, Resevation.StartDato,  Person.Initialer\  
                                 FROM Resevation\  
                                 INNER JOIN Person ON Resevation.PersonID = Person.PersonID ";  
                 SQL += "WHERE Resevation.Stregkode = " + buffer[i].barcode + " ORDER BY STARTDATO ASC";  
                   
                 rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);  
                 if (rs.GetRecordCount()>0) {  
                         rs.MoveFirst();  
                         while ( !rs.IsEOF() ) {  
                                 Reservation res;  
                                 rs.GetFieldValue((short)0, res.reservationID);  
                                 rs.GetFieldValue(1, res.startdate);  
                                 rs.GetFieldValue(2, res.inits);  
   
                                 buffer[i].reservations.push_back(res);  
                                 rs.MoveNext();  
                         }  
                 }  
                 rs.Close();  
         }  
   
373          return buffer;          return buffer;
374  }  }
375    

Legend:
Removed from v.41  
changed lines
  Added in v.56

  ViewVC Help
Powered by ViewVC 1.1.20