Lave crystal reports udfra en collection klasse
HejJeg har udviklet et timeregistreringssystem.
Jeg har en tidsforbrugsklasse (med tilknyttet interface), en tidsforbrugsCollection, en systemklasse (facadeController) og så selve Guiklassen (form1.cs)
I min collection klasse har jeg en IEnumerator til at gennemløbe alle mine gemte forbrug.
Mine forbrug vil jeg gerne have listet i en Crystal Report, men hvordan får jeg dataene ind?
Jeg gemmer i øvrigt mine data i en binær fil vha. Filestream.
Herunder er den kode jeg tror er nødvendig for at i kan hjælpe:
------------------------------------------------------
CollectionKlasse:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace Timeregistreringssystem
{
[Serializable]
class TidsforbrugCol : IEnumerator
{
private List<Tidsforbrug> forbrug;
[NonSerialized]
private int aktuelForbrugIdx;
public TidsforbrugCol()
{
forbrug = new List<Tidsforbrug>();
aktuelForbrugIdx = 0;
}
public void opretForbrug(DateTime dato, double timer, string beskrivelse)
{
Tidsforbrug f = new Tidsforbrug(dato, timer, beskrivelse);
forbrug.Add(f);
}
public void sletForbrug(DateTime dato, string beskrivelse)
{
int index;
Tidsforbrug f = new Tidsforbrug(dato, 0, beskrivelse);
f = getForbrug(dato, beskrivelse);
index = forbrug.IndexOf(f);
forbrug.RemoveAt(index);
}
public void retForbrug(DateTime dato, double timer, string beskrivelse)
{
Tidsforbrug f = getForbrug(dato, beskrivelse);
f.Dato = dato;
f.Timer = timer;
f.Beskrivelse = beskrivelse;
}
public Tidsforbrug getForbrug(DateTime dato, string beskrivelse)
{
Tidsforbrug fundetForbrug = null;
foreach (Tidsforbrug f in forbrug)
{
if((f.Dato == dato) && (f.Beskrivelse == beskrivelse))
{
fundetForbrug = f;
break;
}
}
return fundetForbrug;
}
public int GetAntalForbrug()
{
return forbrug.Count;
}
#region IEnumerator Members
public void Reset()
{
aktuelForbrugIdx = -1;
}
public object Current
{
get
{
return forbrug[aktuelForbrugIdx];
}
}
public bool MoveNext()
{
aktuelForbrugIdx++;
return (aktuelForbrugIdx < forbrug.Count);
}
#endregion
}
}
------------------------------------------------------
Tidsforbrug:
using System;
using System.Collections.Generic;
using System.Text;
namespace Timeregistreringssystem
{
[Serializable]
class Tidsforbrug : IForbrug
{
DateTime dato;
double timer;
string beskrivelse;
public Tidsforbrug(DateTime dato, double timer, string beskrivelse)
{
this.dato = dato;
this.timer = timer;
this.beskrivelse = beskrivelse;
}
public DateTime Dato
{
get { return dato; }
set { dato = value; }
}
public double Timer
{
get { return timer; }
set { timer = value; }
}
public string Beskrivelse
{
get { return beskrivelse; }
set { beskrivelse = value; }
}
}
}
------------------------------------------------------------
FileStream der gemmer data:
if (File.Exists(FILNAVN))
{
FileStream fileStream = new FileStream(FILNAVN, FileMode.Open, FileAccess.Read);
BinaryFormatter binFormatter = new BinaryFormatter();
forbrugsSystem = (ForbrugsSystem)binFormatter.Deserialize(fileStream);
fileStream.Close();
}
