--- MicrosoftDBLayer.cpp 2006/09/09 05:24:33 52 +++ MicrosoftDBLayer.cpp 2006/09/12 10:16:06 56 @@ -210,7 +210,7 @@ Equipment MicrosoftDBLayer::GetEquipment(CString wantBarcode) { - CString barcode,name,description,placement,status; + CString barcode,name,description,placement,status,statusid; CString SQL; @@ -218,7 +218,7 @@ Equipment e; - SQL.Format("SELECT Stregkode,Navn,Udstyr.Beskrivelse,Placering,Status.Beskrivelse FROM Udstyr INNER JOIN Status ON Udstyr.Status = Status.StatusID Where (Stregkode = '%s')", wantBarcode); + SQL.Format("SELECT Stregkode,Navn,Udstyr.Beskrivelse,Placering,Status.Beskrivelse, Udstyr.Status FROM Udstyr INNER JOIN Status ON Udstyr.Status = Status.StatusID Where (Stregkode = '%s')", wantBarcode); CRecordset rs(&db); rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL); if (!rs.IsEOF() ) @@ -228,14 +228,61 @@ rs.GetFieldValue(2,description); rs.GetFieldValue(3,placement); rs.GetFieldValue(4,status); + rs.GetFieldValue(5,statusid); e.barcode = barcode; e.name = name; e.description = description; e.placement = placement; e.status = status; + e.statusid = atoi( statusid ); + + rs.Close(); + + //fill Equipment::checkouts + SQL = "SELECT TOP 10 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 = " + barcode + " ORDER BY STARTDATO DESC"; + 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); + + e.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 = " + 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); + + e.reservations.push_back(res); + rs.MoveNext(); + } + } + rs.Close(); } - rs.Close(); + return e; } @@ -318,55 +365,6 @@ rs.Close(); } - // 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; i0) { - 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(); - } - return buffer; }