Try changing your font from Comic Sans to something like Lucida Console or 
Courier New and run it again.

Don't worry, I think this one has caught us all out at some point in our lives.

From: ozdotnet-boun...@ozdotnet.com [mailto:ozdotnet-boun...@ozdotnet.com] On 
Behalf Of Glen Harvy
Sent: Wednesday, 12 February 2014 4:51 PM
To: ozDotNet
Subject: asp.net / database / coding issue.

Hi,

I have had a problem with one client of mine where they run a court rental 
agency for various councils and they do everything on a shoestring. I believe 
everything in the office is run on a laptop with 4 gig memory including my 
software which includes a web server which provides their users with the 
ability to book courts. I have had no reports of the problem from any of my 
other clients.

The specific issue is when I check that there are no present bookings before 
allowing a new booking for any specific time frame.

I have little in-depth knowledge of asp.net however I do believe that each 
customer logged on have their own session state and the html is created in that 
state and then fed to the customers browser. There should be no cross-over of 
this data in-memory however I notice that the problem seems to occur when there 
are more than two users logged in. I mention this because the problem may be 
with my coding and not with the database.

Here's the code which I have only just heavily modified in an effort to capture 
the specific problem:

[code=csharp]
      bool available = true;
      string location = "";

      Columns columns = requestedColumnNames(bookingStartDT, bookingPeriods);
      int columnsToBeCheckedCount = columns.ColumnsFirstDay.Count;
      int conflictsFound = 0;
      int columnsChecked = 0;


      using (MCData.DBManager dbManager = new 
MCData.DBManager(AppSettings.DataDirectory))
      {
        try
        {
          location = "Day 1";
          dbManager.Open();
          dbManager.AddParameter("@BookingDate", bookingStartDT.Date);
          dbManager.AddParameter("@FacilityID", facilityID);
          dbManager.ExecuteReader(CommandType.Text,
            string.Format("SELECT BookingDate, Court, {0} FROM BTable WHERE 
BookingDate = @BookingDate AND Court = @FacilityID", columns.CSVFirstDay));
          logger.Debug("+++ FacilityID [{0}]", 
dbManager.Parameter["@FacilityID"].Value<mailto:%22,%20dbManager.Parameter[%22@FacilityID%22].Value>);
          logger.Debug("+++ BookingStartDT [{0}]", 
dbManager.Parameter["@BookingDate"].Value<mailto:%22,%20dbManager.Parameter[%22@BookingDate%22].Value>);
          logger.Debug("+++ SQL [{0}]", dbManager.Command.CommandText);
          logger.Debug("+++ Connection string [{0}]", 
dbManager.ConnectionString);
          int fieldsReturned = 0;
          using (IDataReader rdr = dbManager.DataReader)
          {
            while (rdr.Read())
            {
              for (int i = 0; i < rdr.FieldCount; i++)
              {
                string column = rdr.GetName(i).ToString();
                if (column.StartsWith("T"))
                {
                  fieldsReturned++;
                  columnsChecked++;
                  if (!Convert.IsDBNull(rdr.GetValue(i)))
                  {
                    logger.Debug("+++ Facility [{0}] Date [{1}] Column [{2}] 
value is not null [{3}].",
                      facilityID, bookingStartDT.Date, column, rdr.GetValue(i));
                    conflictsFound++;
                  }
                }
                else if (column == "BookingDate")
                {
                  logger.Debug("+++ BookingDate returned [{0:yyyy-MM-dd 
HH:mm:ss}]", rdr.GetValue(i));
                }
                else if (column == "Court")
                {
                  logger.Debug("+++ Court returned [{0}]", rdr.GetValue(i));
                }
              }
            }
          }

          logger.Debug("+++ Number of fields tested for null value [{0}] of a 
total TColumn count of [{1}]",
            fieldsReturned, columns.ColumnsFirstDay.Count);

          logger.Debug("+++ Columns to be checked count [{0}] Columns cheked 
count [{1}]",
            columnsToBeCheckedCount, columnsChecked);

          if (columnsChecked == columnsToBeCheckedCount && conflictsFound > 0)
          {
            logger.Debug("+++ All columns checked. Number of conflicts found 
[{0}]", conflictsFound);
            available = false;
          }
          if (available && columnsChecked != columnsToBeCheckedCount)
          {
            logger.Debug("+++ Not all columns checked. Setting availability to 
false.");
            available = false;
          }

          if (available && conflictsFound > 0)
          {
            logger.Debug("+++ Number of conflicts found [{0}]", conflictsFound);
            available = false;
          }

          logger.Debug("+++ Available status is [{0}]", available);

[/code]


Now here's the log portion:

2014-02-12 09:42:07.9304 HP-HP MyCourtsOnline.Default.#wPc ypaul Checking For 
Booking Conflicts RequestedFacilityID [6] RequestedStartDT [12/02/2014 5:30:00 
PM] RequestedPeriods [3]
2014-02-12 09:42:07.9704 HP-HP MyCourtsOnline.CheckForConflictingBookings.#9gg 
ypaul +++ FacilityID [6]
2014-02-12 09:42:07.9704 HP-HP MyCourtsOnline.CheckForConflictingBookings.#9gg 
ypaul +++ BookingStartDT [12/02/2014 12:00:00 AM]
2014-02-12 09:42:07.9704 HP-HP MyCourtsOnline.CheckForConflictingBookings.#9gg 
ypaul +++ SQL [SELECT BookingDate, Court, 
T1730,T1740,T1745,T1800,T1815,T1820,T1830,T1840,T1845 FROM BTable WHERE 
BookingDate = @BookingDate AND Court = @FacilityID]
2014-02-12 09:42:07.9704 HP-HP MyCourtsOnline.CheckForConflictingBookings.#9gg 
ypaul +++ Connection string [Data Source = 'C:\ProgramData\Aquarius 
Communications\MyCourts\Resources\MyCourts.vdb4';Pooling=false;Open 
Mode=NonExclusiveReadWrite]
2014-02-12 09:42:07.9704 HP-HP MyCourtsOnline.CheckForConflictingBookings.#9gg 
ypaul +++ Number of fields tested for null value [0] of a total TColumn count 
of [9]
2014-02-12 09:42:07.9704 HP-HP MyCourtsOnline.CheckForConflictingBookings.#9gg 
ypaul +++ Columns to be checked count [9] Columns cheked count [0]
2014-02-12 09:42:07.9704 HP-HP MyCourtsOnline.CheckForConflictingBookings.#9gg 
ypaul +++ Not all columns checked. Setting availability to false.
2014-02-12 09:42:07.9704 HP-HP MyCourtsOnline.CheckForConflictingBookings.#9gg 
ypaul +++ Available status is [False]

As you can see, my code has not checked any of the returned fields starting 
with 'T' and hence, by default, returned false. In fact, there were no bookings 
recorded/conflicting and had the fields been checked would have returned true.

I'm at a loss to see where my coding is at fault. Could this in anyway be 
related to the sql query result, asp.net or perhaps a memory issue.

Any suggestions will be greatly appreciated cause I'm at wits end.

Regards,

Glen.


Click here<https://www.mailcontrol.com/sr/MZbqvYs5QwJvpeaetUwhCQ==> to report 
this email as spam.


This message has been scanned for malware by Websense. www.websense.com

Reply via email to