Quellcode erst nach Bedingung ausführen

tesarolle

Mitglied
Hallo Leute,

ach ich habe ein Problem.


Ich habe ein Formular auf dem nach Ausführung von 3 SQL-Statements sofort 3 Zahlenwerte angezeigt werden.

Ich will nun eine Check Box einfügen, und das so haben das ich erst nachdem auf die Checkbox geklickt wurde, er anfängt den Quellcode auszuführen.

Ich bringe das einfach nicht hin. Bin anscheinend echt zu doof die Bedingung vorher abzufragen. Ich habe eine Checkbox, und ich möchte das erst wenn die auf "True" steht der Code ausgeführt wird. Ich komme aus einer anderen Programmiersprache und habe eceht noch keine Ahnung von .net.

Kann mir jemand sagen wo ich die Bedingung einfügen muss?

Ich habe halt den Code hier:
HTML:
namespace dbAnzeige
{
    public partial class frmStartform : Form
    {
        public frmStartform()
        {
            InitializeComponent();
        }
        //Konstanten
        //string sConnectionString = "Database=dbAuftrag;User ID=dbAuftrag;pwd=diddbpfd;server=(local)";
        string sConnectionString = "Database=dbAuftrag;User ID=dbAuftrag;pwd=diddbpfd;server=100.1.1.1";
        double dblAnzahlSekundenBisRequery = 300;

        DateTime StartZeit;
        double dblStartUmsatz;
        double dblStartGewinn;
        double dblStartAuftragseingang;
        double dblEndUmsatz;
        double dblEndGewinn;
        double dblEndAuftragseingang;
        
        private void Form1_Load(object sender, EventArgs e)
        {
            try { DatenbankAuslesen(); }
            catch { Application.Exit(); }
            dblStartUmsatz = dblEndUmsatz;
            dblStartGewinn = dblEndGewinn;
            dblStartAuftragseingang = dblEndAuftragseingang;
            //frmStartform_Resize(this,e);

        }

        private void DatenbankAuslesen()
        {
            string sCommandUmsatz = "SELECT isnull(SUM(Auftragstotal),0) FROM [Order] WHERE [Order].[DatumAuftragFertig] is not null and [Order].[Abrufauftrag]=0 AND Rechnungsdatum>=convert(datetime, '1/" + DateTime.Now.Month.ToString() + "/" + DateTime.Now.Year.ToString() + "')";
            string sCommandGewinn = "SELECT isnull(SUM([Auftragstotal]-isnull([Einkaufspreis],0)-isnull([Transportkosten],0)-isnull([Weiterekosten],0)-isnull([BetragDebitorenverlust],0)-isnull([BetragReklamation],0)),0) FROM [Order] WHERE [Order].[DatumAuftragFertig] is not null and [Order].[Abrufauftrag]=0 AND Rechnungsdatum>=convert(datetime, '1/" + DateTime.Now.Month.ToString() + "/" + DateTime.Now.Year.ToString() + "')";
            string sCommandAuftragseingang = "SELECT isnull(SUM(ISNULL([Stückzahl],0)*ISNULL([Stückpreis],0)+ISNULL([Initialkosten],0)),0) FROM [Order] WHERE [Order].[DatumBestellung] is not null and [Order].[Abrufauftrag]=0 AND DatumBestellung>=convert(datetime, '1/" + DateTime.Now.Month.ToString() + "/" + DateTime.Now.Year.ToString() + "')";
            double dblEuroKurs;
            SqlConnection sqlConnection1 = new SqlConnection(sConnectionString);
            SqlCommand cmd = new SqlCommand();
            try
            {
                sqlConnection1.Open();
            }
            catch
            {
                MessageBox.Show("Datenbankverbindung schlug fehl", "dbAuftrag-Datenbank abfragen", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            cmd.CommandType = CommandType.Text;
            cmd.Connection = sqlConnection1;
            cmd.CommandText = "SELECT UmrechnungsfaktorFRzuEuroPreisberechnungV2 FROM Konfiguration";
            dblEuroKurs=(double)cmd.ExecuteScalar();

            //Umsatz ermitteln
            cmd.CommandText = sCommandUmsatz + " AND Währung<>'Fr.'";
            dblEndUmsatz = dblEuroKurs*(double)cmd.ExecuteScalar();
            cmd.CommandText = sCommandUmsatz + " AND Währung='Fr.'";
            dblEndUmsatz += (double)cmd.ExecuteScalar();

            //Gewinn ermitteln
            cmd.CommandText = sCommandGewinn + " AND Währung<>'Fr.'";
            dblEndGewinn = dblEuroKurs * (double)cmd.ExecuteScalar();
            cmd.CommandText = sCommandGewinn + " AND Währung='Fr.'";
            dblEndGewinn += (double)cmd.ExecuteScalar();

            //Auftragseingang ermitteln
            cmd.CommandText = sCommandAuftragseingang + " AND Währung<>'Fr.'";
            dblEndAuftragseingang = dblEuroKurs * (double)cmd.ExecuteScalar();
            cmd.CommandText = sCommandAuftragseingang + " AND Währung='Fr.'";
            dblEndAuftragseingang += (double)cmd.ExecuteScalar();
            sqlConnection1.Close();
        }

        private void tTimer_Tick(object sender, EventArgs e)
        {
            if (StartZeit.AddSeconds(dblAnzahlSekundenBisRequery) < DateTime.Now)
            {
                StartZeit = DateTime.Now;
                dblStartUmsatz = dblEndUmsatz;
                dblStartGewinn = dblEndGewinn;
                dblStartAuftragseingang = dblEndAuftragseingang;
                DatenbankAuslesen();
            }
            txtUmsatz.Text = (dblStartUmsatz + (dblEndUmsatz - dblStartUmsatz) * (DateTime.Now.Subtract(StartZeit).TotalMilliseconds / 1000 / dblAnzahlSekundenBisRequery)).ToString("N2");
            txtGewinn.Text = (dblStartGewinn + (dblEndGewinn - dblStartGewinn) * (DateTime.Now.Subtract(StartZeit).TotalMilliseconds / 1000 / dblAnzahlSekundenBisRequery)).ToString("N2");
            txtAuftragseingang.Text = (dblStartAuftragseingang + (dblEndAuftragseingang - dblStartAuftragseingang) * (DateTime.Now.Subtract(StartZeit).TotalMilliseconds / 1000 / dblAnzahlSekundenBisRequery)).ToString("N2");
        }

        private void lblGewinn_Click(object sender, EventArgs e)
        {

        }
 
Je nachdem wie genau du das willst. Zumindest muss der Aufruf aus der Form_Load heraus.

Entweder baust du einen eigenen Button ein, durch den deine Methode ausgelöst werden kann, oder du abonnierst das CheckedChanged-Event der CheckBox und rufst dort drinnen deine Methode auf.

Weiters solltest du mit SqlParameter arbeiten.

Zusätzlich solltest du die Daten an deine Methode übergeben und nicht direkt in der Methode die Werte aus den Textboxen etc. auslesen. Denn damit könntest du die Methode beispielsweise auslagern ...
 
Hallo Norbert,

vielen Dank. Ich habe jetzt einen anderen Lösungsansatz. Ich will die Felder die ich ja jeweils über :

HTML:
     txtUmsatz.Text = (dblStartUmsatz + (dblEndUmsatz - dblStartUmsatz) * (DateTime.Now.Subtract(StartZeit).TotalMilliseconds / 1000 / dblAnzahlSekundenBisRequery)).ToString("N2");

auf dem Form anzeigen lasse, unter abhängigkeit einer Checkbox ein oder ausblenden.

Also ich will erreichen das z.b. dieses Feld was ich hier im quellcode habe standardmäßig angezeigt wird und wenn ich den haken rausnehme unsichtbar wird, wie geht das?

Bitte evtl. kleines Beispiel bezogen auf das eine Feld...

Das wäre Super. Vielen dank.
 
Zurück