private void createShooter(int cardnr)
		{
			Structs.Shooter shooter = new Structs.Shooter();
			shooter.CardNr = cardnr.ToString();
			shooter.Class = Structs.ShootersClass.Klass1;
			shooter.ClubId = "01-001";
			shooter.Givenname = cardnr.ToString();
			shooter.Surname = cardnr.ToString();
			intf.NewShooter(shooter);
		}
		private void ImportDatasetThread()
		{
			Trace.WriteLine("CFileImport: ImportDatasetThread started " +
				"on thread \"" + Thread.CurrentThread.Name + "\" ( " +
				System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

			int i = -1;
			foreach(DataRow row in this.ViewDatatable.Rows)
			{
				i++;
				string classString = null;

				Trace.WriteLine("CFileImport: ImportDatasetThread calling " +
					"updatedFileImportCount(" + i.ToString() + ", " +
					ViewDatatable.Rows.Count.ToString() + ")");
				myInterface.updatedFileImportCount(
					i,ViewDatatable.Rows.Count);

				// Get shooter
				string shooterCard = (string)row[viewTableColumnNames.Skyttekort.ToString().Trim()];

				// Get shooter from DB
				Structs.Shooter shooter;
				try
				{
					shooter = myInterface.GetShooter(shooterCard);

					classString = (string)row[viewTableColumnNames.Klass.ToString()];
					if (classString.IndexOf("1") >= 0)
						shooter.Class = Structs.ShootersClass.Klass1;
					if (classString.IndexOf("2") >= 0)
						shooter.Class = Structs.ShootersClass.Klass2;
					if (classString.IndexOf("3") >= 0)
						shooter.Class = Structs.ShootersClass.Klass3;

					myInterface.UpdateShooter(shooter);
				}
				catch (CannotFindIdException)
				{
					// Add user to DB with values from file.
					shooter = new Structs.Shooter();
					// What class?
					classString = (string)row[viewTableColumnNames.Klass.ToString()];
					Structs.ShootersClass sclass = Structs.ShootersClass.Klass1;
					if (classString.IndexOf("1") >= 0)
						sclass = Structs.ShootersClass.Klass1;
					if (classString.IndexOf("2") >= 0)
						sclass = Structs.ShootersClass.Klass2;
					if (classString.IndexOf("3") >= 0)
						sclass = Structs.ShootersClass.Klass3;

					if (shooterCard == "")
					{
						try
						{
							Random rnd = new Random();
							while (true)
							{
								shooterCard = (-rnd.Next(100000)).ToString();
								myInterface.GetShooter(shooterCard);
							}
						}
						catch (CannotFindIdException)
						{
						}
					}
					// Create shooter and insert into database
					shooter.Automatic = false;
					shooter.CardNr = shooterCard.ToString();
					shooter.Class = sclass;
					shooter.ClubId = ((string)row[viewTableColumnNames.Klubb.ToString()]).Trim();
					shooter.Email = ((string)row[viewTableColumnNames.Epost.ToString()]).Trim();
					shooter.Givenname = ((string)row[viewTableColumnNames.Efternamn.ToString()]).Trim();
					shooter.Surname = ((string)row[viewTableColumnNames.Fornamn.ToString()]).Trim();
					shooter.Payed = 0;
					shooter.ToAutomatic = false;

					shooter.ShooterId = myInterface.NewShooter(shooter, false);
					if (shooter.ShooterId < 0)
						throw new ApplicationException("ShooterId is " + shooter.ShooterId);
				}

				// Ok, shooter is done. Create competitor
				classString = (string)row[viewTableColumnNames.Klass.ToString().ToUpper()];
				Structs.ShootersClass cclass = shooter.Class;
				if (classString.IndexOf("D")>=0)
				{
					cclass = (Structs.ShootersClass)(
						(int)Structs.ShootersClass.Damklass1 - 1 +
						(int)cclass);
				}
				if (classString.IndexOf("J")>=0)
				{
					cclass = Structs.ShootersClass.Juniorklass;
				}
				if (classString.IndexOf("VY")>=0)
				{
					cclass = Structs.ShootersClass.VeteranklassYngre;
				}
				if (classString.IndexOf("VÄ")>=0)
				{
					cclass = Structs.ShootersClass.VeteranklassÄldre;
				}
				if (classString.IndexOf("Ö")>=0)
				{
					cclass = Structs.ShootersClass.Öppen;
				}

				// Phu, class is done. Continue with competitor
				Structs.Competitor competitor = new Structs.Competitor();
				competitor.CompetitionId = myInterface.GetCompetitions()[0].CompetitionId;
				competitor.ShooterId = shooter.ShooterId;
				competitor.WeaponId = (string)row[viewTableColumnNames.Vapen.ToString()];
				competitor.PatrolId = -1;
				competitor.Lane = -1;
				competitor.ShooterClass = cclass;

				if (!row.IsNull(viewTableColumnNames.Patrull.ToString()) &&
					((string)row[viewTableColumnNames.Patrull.ToString()]).Trim() != "")
				{
					try
					{
						// Patrol defined in importfile
						string patrolString = (string)row[viewTableColumnNames.Patrull.ToString()];
						int patrolId = -1;
						patrolId = int.Parse(patrolString);
						while (patrolId > myInterface.GetPatrolsCount())
						{
							myInterface.PatrolAddEmpty(false);
						}
						competitor.PatrolId = patrolId;
						string laneString = null;
						if (!row.IsNull(viewTableColumnNames.Bana.ToString()))
							laneString = (string)row[viewTableColumnNames.Bana.ToString()];

						if (laneString != null &&
							laneString.Trim() != "")
						{
							competitor.Lane = int.Parse(laneString);
						}
						else
						{
							competitor.Lane = myInterface.PatrolGetNextLane(patrolId);
						}
					}
					catch (System.FormatException)
					{
						// If this occurres, just ignore. It really shouldn't, since
						// it has already been checked
					}
				}

				myInterface.NewCompetitor(competitor, false);
			}

			myInterface.updatedFileImportCount(
				ViewDatatable.Rows.Count,
				ViewDatatable.Rows.Count);
			myInterface.updatedShooter(new Structs.Shooter());
			myInterface.updatedCompetitor(new Structs.Competitor());
			myInterface.updatedPatrol();
		}
		private void timerAddShooters()
		{
			try
			{
				lock (timerAddShootersRunningLock)
				{
					if (timerAddShootersRunning)
						return;
					timerAddShootersRunning = true;
				}
				Trace.WriteLine("timerAddShooters_Tick on Thread \" " + 
					Thread.CurrentThread.Name + "\"" +
					Thread.CurrentThread.ManagedThreadId.ToString());

				Structs.Shooter shooter = new Structs.Shooter();
				shooter.Automatic = false;
				shooter.CardNr = rnd.Next(100000).ToString();
				int shooterClassInt = -1;
				while(((Structs.ShootersClass)shooterClassInt).ToString() ==
					shooterClassInt.ToString())
				{
					shooterClassInt = rnd.Next(2)+1;
				}
				shooter.Class = (Structs.ShootersClass)shooterClassInt;
				shooter.ClubId = "01-417";
				shooter.Email = "*****@*****.**";
				shooter.Givenname = shooter.CardNr;
				shooter.Payed = 0;
				shooter.Surname = shooter.CardNr;
				shooter.ToAutomatic = false;
				int shooterId = CommonCode.NewShooter(shooter);

				int nrOfCompetitors = 1 + rnd.Next(3);
				for(int i=0; i<nrOfCompetitors; i++)
				{
					Structs.Competitor comp = new Structs.Competitor();
					comp.CompetitionId = CommonCode.GetCompetitions()[0].CompetitionId;
					while(comp.Lane == 0)
					{
						try
						{
							comp.PatrolId = 1+rnd.Next(80);
							bool retry = true;
							while (retry)
							{
								try
								{
									CommonCode.GetPatrol(comp.PatrolId);
									retry = false;
								}
								catch (Allberg.Shooter.Common.CannotFindIdException)
								{
									CommonCode.PatrolAddEmpty();
								}
							}
							comp.Lane = CommonCode.PatrolGetNextLane(comp.PatrolId);
						}
						catch(Exception)
						{
						}
					}
					comp.ShooterClass = shooter.Class;
					comp.ShooterId = shooterId;
					comp.WeaponId = "G9-A1";
					CommonCode.NewCompetitor(comp);
				}
			}
			catch(Exception exc)
			{
				Trace.WriteLine("Exception while adding competitor:" + exc.ToString());
			}
			finally
			{
				timerAddShootersRunning = false;
			}
		}
		internal Structs.Shooter GetShooter(string cardNr)
		{
			Trace.WriteLine("CDatabase: Entering getShooter(" +
				cardNr + ")");

			var shooter = new Structs.Shooter();

			foreach(DatabaseDataset.ShootersRow row in Database.Shooters.Select("Cardnr='" + cardNr + "'"))
			{
				if (row.Cardnr != cardNr) 
					continue;

				shooter.Arrived = row.Arrived;
				shooter.ClubId = row.ClubId;
				shooter.CardNr = row.Cardnr;
				shooter.Email = row.Email;
				shooter.Givenname = row.Givenname;
				shooter.Surname = row.Surname;
				shooter.Payed = row.Payed;
				shooter.ToAutomatic = row.ToAutomatic;
				shooter.ShooterId = row.ShooterId;
				shooter.Class = (Structs.ShootersClass)row.Class;
				return shooter;
			}
			throw new CannotFindIdException("Cannot find shooter CardNr " + cardNr.ToString());
		}
		internal Structs.Shooter GetShooter(int shooterId)
		{
			Trace.WriteLine("CDatabase: Entering getShooter(" +
				shooterId.ToString() + ") on thread \"" +
				System.Threading.Thread.CurrentThread.Name + "\" ( " +
				System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

			Structs.Shooter shooter = new Structs.Shooter();

			foreach(DatabaseDataset.ShootersRow row in 
				Database.Shooters/*.Select("shooterId=" + shooterId.ToString(), 
				"")*/)
			{
				if (row.ShooterId == shooterId)
				{
					shooter.Arrived = row.Arrived;
					shooter.ClubId = row.ClubId;
					shooter.CardNr = row.Cardnr;
					shooter.Email = row.Email;
					shooter.Givenname = row.Givenname;
					shooter.Surname = row.Surname;
					shooter.Payed = row.Payed;
					shooter.ToAutomatic = row.ToAutomatic;
					shooter.Automatic = row.Automatic;
					shooter.ShooterId = row.ShooterId;
					shooter.Class = (Structs.ShootersClass)row.Class;
					return shooter;
				}
			}
			throw new CannotFindIdException("Cannot find shooter id " + shooterId);
		}
		internal Structs.Shooter[] GetShooters(Structs.Club club, Structs.ResultWeaponsClass wclass)
		{
			Trace.WriteLine(string.Format("CDatabase: Entering getShooters(\"{0}\", {1})", club.ClubId, wclass));

			var shooters = new ArrayList();
			var shooter = new Structs.Shooter();

			foreach(DatabaseDataset.ShootersRow row in Database.Shooters.Select("ClubId='" + club.ClubId + "'", "givenname, surname"))
			{
				foreach(DatabaseDataset.CompetitorsRow comprow in row.GetChildRows("ShootersCompetitors"))
				{
					var weaponsrow = 
						(DatabaseDataset.WeaponsRow)comprow.GetParentRow("WeaponsCompetitors");
					var weaponclass = (Structs.WeaponClass)weaponsrow.Class;
					if (MyInterface.ConvertWeaponsClassToResultClass(weaponclass) != wclass) 
						continue;

					// Only choose those with the same wclass
					shooter = new Structs.Shooter();
					shooter.Arrived = row.Arrived;
					shooter.ClubId = row.ClubId;
					shooter.CardNr = row.Cardnr;
					shooter.Email = row.Email;
					shooter.Givenname = row.Givenname;
					shooter.Surname = row.Surname;
					shooter.Payed = row.Payed;
					shooter.ToAutomatic = row.ToAutomatic;
					shooter.ShooterId = row.ShooterId;
					shooter.Class = (Structs.ShootersClass)row.Class;
					shooters.Add(shooter);
				}
			}
			return (Structs.Shooter[])shooters.ToArray(shooter.GetType());
		}
		internal Structs.Shooter[] GetShooters(Structs.Club club)
		{
			Trace.WriteLine("CDatabase: Entering getShooters(\"" + club.ClubId + "\")");

			var shooters = new ArrayList();
			var shooter = new Structs.Shooter();

			foreach(DatabaseDataset.ShootersRow row in Database.Shooters.Select("ClubId='" + club.ClubId + "'", "givenname, surname"))
			{
				shooter = new Structs.Shooter();
				shooter.Arrived = row.Arrived;
				shooter.ClubId = row.ClubId;
				shooter.CardNr = row.Cardnr;
				shooter.Email = row.Email;
				shooter.Givenname = row.Givenname;
				shooter.Surname = row.Surname;
				shooter.Payed = row.Payed;
				shooter.ToAutomatic = row.ToAutomatic;
				shooter.ShooterId = row.ShooterId;
				shooter.Class = (Structs.ShootersClass)row.Class;
				shooters.Add(shooter);
			}
			return (Structs.Shooter[])shooters.ToArray(shooter.GetType());
		}
		internal Structs.Shooter[] GetShooters(string sorting)
		{
			Trace.WriteLine("CDatabase: Entering getShooters()");

			var shooters = new ArrayList();
			var shooter = new Structs.Shooter();

			foreach(DatabaseDataset.ShootersRow row in Database.Shooters.Select("", sorting))
			{
				// Safety first...
				if (row.IsArrivedNull())
					row.Arrived = false;

				shooter = new Structs.Shooter();
				shooter.Arrived = row.Arrived;
				shooter.ClubId = row.ClubId;
				shooter.CardNr = row.Cardnr;
				shooter.Email = row.Email;
				shooter.Givenname = row.Givenname;
				shooter.Surname = row.Surname;
				shooter.Payed = row.Payed;
				shooter.ToAutomatic = row.ToAutomatic;
				shooter.ShooterId = row.ShooterId;
				shooter.Class = (Structs.ShootersClass)row.Class;
				shooters.Add(shooter);
			}
			return (Structs.Shooter[])shooters.ToArray(shooter.GetType());
		}
		private void btnDelete_Click(object sender, System.EventArgs e)
		{
			Trace.WriteLine("FCompetitors: btnDelete_Click started on thread \"" +
				Thread.CurrentThread.Name + "\" ( " +
				Thread.CurrentThread.ManagedThreadId.ToString() +
				" )");

			Structs.Shooter shooter = new Structs.Shooter();
			DialogResult res =
				MessageBox.Show("Är du säker på att du vill radera både " +
				"resultat och skytt?", 
				"Felmeddelande", 
				MessageBoxButtons.YesNo, 
				MessageBoxIcon.Question);
			if (res == DialogResult.Yes)
			{
				try
				{
					if ((string)this.ddShooters.SelectedValue != NewShooterValue)
					{
						shooter = 
							CommonCode.GetShooter(int.Parse((string)this.ddShooters.SelectedValue));

						foreach (Structs.Competitor comp in 
							CommonCode.GetCompetitors(shooter.ShooterId))
						{
							foreach (Structs.CompetitorResult result in 
								CommonCode.GetCompetitorResults(comp.CompetitorId))
							{
								CommonCode.DelCompetitorResult(result);
							}
							CommonCode.DelCompetitor(comp);
						}
						CommonCode.DelShooter(shooter);
						clearEverything();
					}
				}
				catch(Exception exc)
				{
					Trace.WriteLine(exc.ToString());
					throw;
				}
			}
		}
		private void txtCardNr_CursorLeave(object sender, System.EventArgs e)
		{
			// Check if its a current shooter
			if ((string)ddShooters.SelectedValue != NewShooterValue)
			{
				if ((string)this.ddShooters.SelectedValue == null)
					return;

				int selectedShooterId = int.Parse((string)this.ddShooters.SelectedValue);
				Structs.Shooter selectedShooter = new Structs.Shooter();
				try
				{
					selectedShooter = CommonCode.GetShooter(selectedShooterId);
				}
				catch (CannotFindIdException)
				{	return;
				}

				// Current Shooter
				if (selectedShooter.CardNr == this.txtCardNr.Text)
				{
					// Ok, nothings changed.
					return;
				}
				DialogResult res = MessageBox.Show("Vill du ändra " +
					"pistolkortet för denna skytt? \r\n\r\n(" +
					"Om du svarar nej så kommer du att försöka öppna en annan " +
					"skytt med detta nummer)", 
					"Fråga", 
					MessageBoxButtons.YesNo, 
					MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
				if (res == DialogResult.No |
					res == DialogResult.Cancel)
				{
					// Ok, retrieve shooter
					try
					{
						selectedShooter = CommonCode.GetShooter(this.txtCardNr.Text);
						this.ddShooters.SelectedValue = selectedShooter.ShooterId;
					}
					catch (CannotFindIdException)
					{
						// Shooter didn't exist in current db
						string cardnr = this.txtCardNr.Text;
						this.ddShooters.SelectedIndex = 0;
						try
						{
							selectedShooter = CommonCode.GetShooterFromCache(cardnr);
							this.txtSurName.Text = selectedShooter.Surname;
							this.txtGivenName.Text = selectedShooter.Givenname;
							this.txtEmail.Text = selectedShooter.Email;
							this.ddShooterClass.SelectedValue = (int)selectedShooter.Class;
							this.ddClubs.SelectedValue = selectedShooter.ClubId;
						}
						catch (CannotFindIdException)
						{
							// Person didn't exit in cache
						}
					}

				}
			}
			else
			{
				// New Shooter
				try
				{
					// Check if shooter already exist in db
					Structs.Shooter shooter = CommonCode.GetShooter(this.txtCardNr.Text);
					// Ok, person exists, select it and retreive other values
					ddShooters.SelectedValue = shooter.ShooterId;
					ddShooters_SelectedIndexChanged();
					return;
				}
				catch (CannotFindIdException)
				{
					// We get an CannotFindIdException if person does not exist
					// in db. This is OK.
				}

				// Ok, person does not exist in Db. How about embedded resources?
				try
				{
					Structs.Shooter shooter =
						CommonCode.GetShooterFromCache(txtCardNr.Text);

					// Ok, we've got a shooter since no exception. View him
					txtSurName.Text = shooter.Surname;
					txtGivenName.Text = shooter.Givenname;
					txtEmail.Text = shooter.Email;
					ddShooterClass.SelectedValue = (int)shooter.Class;
					ddClubs.SelectedValue = shooter.ClubId;
				}
				catch (CannotFindIdException)
				{
					// Shooter didn't exist in Cache
					return;
				}
			}
		}
		private void btnSave_ClickNewShooter(string cardnr)
		{
			#region New Shooter
			Trace.WriteLine("FCompetitors: btnSave_Click saving new shooter.");

			// New Shooter
			Structs.Shooter shooter =
				new Structs.Shooter();
			shooter.ClubId = (string)this.ddClubs.SelectedValue;
			shooter.CardNr = cardnr;
			shooter.Email = this.txtEmail.Text;
			shooter.Givenname = this.txtGivenName.Text;
			try
			{
				shooter.Payed = int.Parse(this.txtPayed.Text);
			}
			catch (System.FormatException exc)
			{
				throw new FormatException("Could not parse \"Payed\" as an integer. Value=\"" + 
					this.txtPayed.Text + "\"", exc);
			}
			shooter.ShooterId = -1;
			shooter.Surname = this.txtSurName.Text;
			shooter.ToAutomatic = false;
			shooter.Automatic = false;
			shooter.Arrived = chkArrived.Checked;
			int iClass;
			try
			{
				iClass = int.Parse((string)ddShooterClass.SelectedValue);
			}
			catch (FormatException exc)
			{
				throw new FormatException("Could not parse ddShooterClass for Shooter class. Value=\"" +
					(string)ddShooterClass.SelectedValue, exc);
			}
			shooter.Class = (Structs.ShootersClass)iClass;

			if (CommonCode.EnableInternetConnections & int.Parse(cardnr) > 0)
			{
				DialogResult res =
					MessageBox.Show("Fråga skytten om han vill läggas till " +
					"i Internet-databasen. Vill han/hon det?",
					"Internet-databasen",
					MessageBoxButtons.YesNo,
					MessageBoxIcon.Question);
				if (res == DialogResult.Yes)
					shooter.ToAutomatic = true;
			}

			ArrayList competitors = new ArrayList();

			// Competitor part
			Structs.Competitor comp = new Structs.Competitor();
			if (this.chkCompetitor1.Checked)
			{
				Trace.WriteLine("FCompetitors: btnSave_Click Competitor 1");
				comp = new Structs.Competitor();
				comp.CompetitionId = CommonCode.GetCompetitions()
					[0].CompetitionId;
				//comp.CompetitorId = -1;
				//comp.ShooterId = shooterId;
				comp.WeaponId = (string)ddWeapon1.SelectedValue;
				comp.PatrolId = (int)ddPatrol1.SelectedValue;
				comp.Lane = CommonCode.PatrolGetNextLane(comp.PatrolId);
				comp.ShooterClass = calculateShootersClass(ref this.ddShooterClass, ref this.ddShooterClass1);
				//CommonCode.NewCompetitor(comp);
				//Trace.WriteLine("FCompetitors: btnSave_Click competitor 1 saved");
				competitors.Add(comp);
			}

			if (this.chkCompetitor2.Checked)
			{
				Trace.WriteLine("FCompetitors: btnSave_Click competitor 2");
				comp = new Structs.Competitor();
				comp.CompetitionId = CommonCode.GetCompetitions()
					[0].CompetitionId;
				//comp.CompetitorId = -1;
				//comp.ShooterId = shooterId;
				comp.WeaponId = (string)ddWeapon2.SelectedValue;
				comp.PatrolId = (int)ddPatrol2.SelectedValue;
				comp.Lane = CommonCode.PatrolGetNextLane(comp.PatrolId);
				comp.ShooterClass = calculateShootersClass(ref this.ddShooterClass, ref this.ddShooterClass2);

				//CommonCode.NewCompetitor(comp);
				//Trace.WriteLine("FCompetitors: btnSave_Click competitor 2 saved");
				competitors.Add(comp);
			}

			if (this.chkCompetitor3.Checked)
			{
				Trace.WriteLine("FCompetitors: btnSave_Click competitor 3");
				comp = new Structs.Competitor();
				comp.CompetitionId = CommonCode.GetCompetitions()
					[0].CompetitionId;
				//comp.CompetitorId = -1;
				//comp.ShooterId = shooterId;
				comp.WeaponId = (string)ddWeapon3.SelectedValue;
				comp.PatrolId = (int)ddPatrol3.SelectedValue;
				comp.Lane = CommonCode.PatrolGetNextLane(comp.PatrolId);
				comp.ShooterClass = calculateShootersClass(ref this.ddShooterClass, ref this.ddShooterClass3);

				//CommonCode.NewCompetitor(comp);
				//Trace.WriteLine("FCompetitors: btnSave_Click competotor 3 saved");
				competitors.Add(comp);
			}

			if (this.chkCompetitor4.Checked)
			{
				Trace.WriteLine("FCompetitors: btnSave_Click competitor 4");
				comp = new Structs.Competitor();
				comp.CompetitionId = CommonCode.GetCompetitions()
					[0].CompetitionId;
				//comp.CompetitorId = -1;
				//comp.ShooterId = shooterId;
				comp.WeaponId = (string)ddWeapon4.SelectedValue;
				comp.PatrolId = (int)ddPatrol4.SelectedValue;
				comp.Lane = CommonCode.PatrolGetNextLane(comp.PatrolId);
				comp.ShooterClass = calculateShootersClass(ref this.ddShooterClass, ref this.ddShooterClass4);
				//CommonCode.NewCompetitor(comp);
				competitors.Add(comp);
			}

			// Do actual saving
			Trace.WriteLine("FCompetitors: btnSave_Click Saving shooter...");

			int shooterId = CommonCode.NewShooter(shooter);
			if (shooterId < 1)
			{
				// Oopss...
				Trace.WriteLine("FCompetitors: btnSave_Click " +
					"Failed to save shooter. Returned id was " +
					shooterId);
				MessageBox.Show("Misslyckades med att spara.",
					"Felmeddelande", MessageBoxButtons.OK,
					MessageBoxIcon.Error);
				return;
			}
			Trace.WriteLine("FCompetitors: btnSave_Click New ShooterId is " +
				shooterId.ToString());

			//int i = 0;
			Structs.Competitor[] competitorArray =
				(Structs.Competitor[])competitors.ToArray(comp.GetType());
			for (int i = 0; i < competitorArray.Length; i++)
			{
				Structs.Competitor compsaving = competitorArray[i];
				compsaving.ShooterId = shooterId;
				CommonCode.NewCompetitor(compsaving);
				Trace.WriteLine("FCompetitors: btnSave_Click competitor " + i.ToString() + " saved");
			}

			clearEverything();
			Trace.WriteLine("FCompetitors: btnSave_Click ended");
			#endregion
		}
		//Override the OnPrintPage to provide the printing logic for the document
		protected override void OnPrintPage(PrintPageEventArgs ev) 
		{
			Trace.WriteLine("CPrintPatrollistByUser: OnPrintPage started" +
				" on thread \"" + Thread.CurrentThread.Name + "\" ( " +
				Thread.CurrentThread.ManagedThreadId.ToString() + " )");

			base.OnPrintPage(ev) ;

			//Work out the number of lines per page 
			//Use the MarginBounds on the event to do this 
			//lpp = ev.MarginBounds.Height  / printFont.GetHeight(ev.Graphics) ;
			float topMargin = ev.MarginBounds.Top;
			topMargin = 25;
			float yPos = topMargin;

			//Now print what we want to print
			Structs.Shooter shooter = new Structs.Shooter();
			if (ShooterIdToPrint != -1)
			{
				shooter = CommonCode.GetShooter(ShooterIdToPrint);
			}
			else
			{
				string temp = null;
				while(temp == null & CommonCode.GetShooterHighestId() >= currentShooter)
				{
					try
					{
						shooter = CommonCode.GetShooter(this.currentShooter);
						temp = "found shooter";
					}
					catch(Common.CannotFindIdException exc)
					{
						Trace.WriteLine("CPrintPatrollistByUser: OnPrintPage Exception " + 
							exc.ToString());
						temp = null;
						currentShooter++;
					}
				}
			}
			printHeader(ev, shooter, ref yPos);
			printShooter(ev, shooter, ref yPos);

			//If we have more patrols then print another page
			if (this.shooterIdToPrint == -1)
			{
				if (CommonCode.GetShooterHighestId() >= this.currentShooter)
					ev.HasMorePages = true;
				else
					ev.HasMorePages = false;
			}
			else
			{
				ev.HasMorePages = false;
			}
		}
Beispiel #13
0
		private Structs.Shooter GetShooterFromEmbeddedFile(string cardNr)
		{
			var rows =
				(DSStartupResources.ShootersRow[])
				_startup.Shooters.Select(
					"CardNr='" + cardNr + "'");
			if (rows.Length <= 0)
				throw new CannotFindIdException("Could not find shooter");

			var shooter = new Structs.Shooter
			              	{
			              		CardNr = rows[0].Cardnr,
			              		ClubId = rows[0].ClubId,
			              		Email = rows[0].Email,
			              		Givenname = rows[0].Givenname,
			              		Surname = rows[0].Surname,
			              		Automatic = true,
			              		Class = (Structs.ShootersClass) rows[0].Class,
			              		LastUpdate = rows[0].LastUpdate
			              	};

			return shooter;
		}