Laden...

Forenbeiträge von Voidcore Ingesamt 106 Beiträge

12.01.2014 - 22:22 Uhr

habe als IDE Monodevelop, egal wo ich die Werte betrachte es steht überall alles drin, werde mal testweise das projekt mit vs2010 laden evtl bekomm ich da andere infos, danke dennoch.

Hab gehoft das jemand sagt "hey da und da das geht nicht" 😃

12.01.2014 - 20:47 Uhr
[STAThread]
		public static void Main (string[] args)
		{}

Ist nur eine kleine Consolen Anwendung, aber das hilft mir jetzt auch nicht weiter.

12.01.2014 - 20:25 Uhr

Guten Abend,

ich habe versucht aus 2 Methoden eine zu machen um doppelten Code zu sparen.
Es werden aaa() oder bbb() aufgerufen, in beiden fällen wird eine datei runter geladen und diese soll als string abgelegt werden bzw. lokal in einer Datei.

Jedoch habe ich nach dem "einsparen" eine Exception welche aber "NULL" ist und ich mir aktuell nicht erklären kann was ich falsch mache, evtl kann mir jemand von euch ein Tip geben.

Oder ist generell der ansatz sowas zu lösen falsch, dann würde ich mir gern mit url oder code beispielen helfen lassen.

mfg void


		private static string aaaTXT { get; set; }
		private static string bbbTXT { get; set; }

		public static string aaa (string YYY)
		{
			if (!string.IsNullOrEmpty (aaaTXT))
				return aaaTXT;
			aaaTXT = _getDSdata ("aaa", dsURL.Replace ("{YYY}", YYY) + aaaTXTurl);
			return aaaTXT;
		}

		public static string bbb (string Welt)
		{
			if (!string.IsNullOrEmpty (bbbTXT))
				return bbbTXT;
			bbbTXT = _getDSdata("bbb",dsURL.Replace ("{YYY}", YYY) + bbbTXTurl);
			return bbbTXT;
		}

		private static string _getDSdata(string file, string url)
		{
			string _data = string.Empty;
			if (File.Exists ("./" + file + ".txt")) {
				using (StreamReader sr = new StreamReader ("./" + file + ".txt")) {
					_data = sr.ReadToEnd ();
				}
			} else {
				_data = httpGET (url);
				using (StreamWriter sw = new StreamWriter ("./" + file + ".txt")) {
				sw.Write(_data);
				}
			}
			return _data;
		}

		private static string httpGET (string URL)
		{
			try {
				WebRequest request = WebRequest.Create (URL);
				request.Credentials = CredentialCache.DefaultCredentials;
				WebResponse response = request.GetResponse ();
				Stream dataStream = response.GetResponseStream ();
				StreamReader reader = new StreamReader (dataStream);
				string responseFromServer = reader.ReadToEnd ();   // <- alles i.O. die Daten die ich benötige stehen in der Variable
				reader.Close ();
				response.Close ();
				return responseFromServer;  // <-- hier springt er in die Exception und ich weiß nicht wieso :(
			} catch (Exception e) {
				Console.Write (e.Message.ToString());
				return string.Empty;
			}
		}

14.08.2012 - 09:01 Uhr

Guten Tag,

ist es möglich bei vs2010 express das ausgabe verzeichnis so zu ändern das die aktuelle versionsnummmer der exe verwendet wird?

zb.

Debug/1.0.0.0/Programm.exe
Release/1.0.0.0/Programm.exe

Ich möchte dabei nicht bei jeder Version die Variable in den Projekteigenschaften ändern sondern es wäre schick wenn man irgendwie sowas wie

Debug/$version/ verwenden könnte. Oder evtl. gibt es ja noch andere möglichkeiten dies zu realisieren.

MfG Voidcore

03.01.2012 - 22:04 Uhr

Wenn ich das DataTable in meineKlasse erstelle kann meine GUI diese doch via bindungen nutzen? oder sollte man dies nicht tun?

Da die GUI ja die Methode der klasse aufruft kann ich doch paralell auch gleich mein Datagridview an meineKlasse.meinDataTable binden?

Die daten welche mit meineKlasse.auslesen() ausgelesen werden kommen stück für stück, jedoch will ich die Daten direkt in einen datagridview anzeigen, und nicht erst wenn diese vollständig sind.

mfg void

ps: sorry wegen der bennennung der Klassen/Controls

03.01.2012 - 21:35 Uhr

Hallo,

ich habe da mal eine Frage bezüglich Klassen design. Es geht um einen simplen webaufruf welches aus einer GUI (Button) gestartet wird.


private void button1_Click(object sender, EventArgs e)
{
    new Thread(meineKlasse.Auslesen).Start(); 
}

public static class meineKlasse
{
    public static void Auslesen()
    {
        // hier werden Daten vom web ausgelesen (dauert einige Zeit)
        // die daten irgendwo hin??!?!!?
    }
}

Die Klasse selber beinhaltet die webaufrufe und alles mögliche. Diese Daten sollen am ende in ein DataTable geschrieben werden und mit bindings in der GUI angezeigt werden.

Jedoch kennt meineKlasse das DataTable nicht (ok ich könnte sie einfach mit übergeben)
Aber war da nicht irgendwas mit nur in eine Richtung (3-schicht model).

Soll meine klasse ein event auslösn das sie fertig ist und daraufhin die form die daten aus der Klasse abholen? (oder mit invoke direkt auf die GUI zugreifen)

Soll meine Klasse einfach die Daten in ein DataTable schreiben welches nicht der GUI gehört und der GUI sagen sie soll ihre bindings darauf machen?

Hilfe und Tips zum verständnis gern gesehen.

22.12.2011 - 18:46 Uhr

Hallo,

ist es möglich eine Consolen application beim minimieren von der Taskleiste verschwinden zu lassen und statt dessen im Systray anziegen zu lassen.

Mit Windows.Forms gibt es ja this.ShowInTaskbar, jedoch handelt es sich bei mir um eine reine Consolen Anwendung.

Danke.

28.08.2011 - 20:13 Uhr

Kann leider für diese Aufgabe nur FW 3.5 nutzen. Und eine weitere DLL wollte ich ungern benutzen.

Auch wenn es unschön ausschaut, ich werde es wohl wie oben geschrieben machen müssen?

Falls jemand doch noch Einfälle/Ideen hat, sie sind gern gesehen.

Danke

28.08.2011 - 19:44 Uhr

Hallo,

ich versuche derzeit ein Objekt Array, welches ich erhalte wenn ich ein JSON string einlese, abzufragen.

Bisher muss ich immer jeden bereich neu Casten um drauf zuzugreifen.


Object jsonObj = JSON.JsonDecode(httpGET("/json.php));

Object knoten = ((Hashtable)jsonmObj)["1"];
            
Object knoten2 = ((Hashtable)knoten)["1"];

int Zahl = int.Parse(((Hashtable)knoten2)["meinWert"].ToString());

Oder Wenn ich alles in allein einsetze komm ich auf


int Zahl = int.Parse(((Hashtable)((Hashtable)((Hashtable)jsonmObj)["1"])["1"])["meinWert"].ToString());

Mir gefallen beide Varianten nicht, gibt es eine andere Lösung? Leider kann ich nicht komplett sagen das dass Objekt ein Hashtable ist, da ab un an auch ein ArrayList drin vor kommt.

Danke im vorraus.

mfg voidcore

31.12.2010 - 23:13 Uhr

Super, genau sowas habe ich gesucht.

Danke

30.12.2010 - 18:06 Uhr

Gibt es ein ereigniss welches ausgelöst wird bei einer neuen Zeile auf der Shell?
Da bei einer shell ja nur eine ausgabe kommt, wenn ich ein befehl eingebe.

Jedoch bekomm ich ja zufällig von einen BackgroundThread daten geliefert.

30.12.2010 - 17:02 Uhr

Hallo, ich suche einen Ansatz wie ich folgendes realisieren kann.

Ich habe eine Consolen Anwendung welche in einen Thread sachen ausführt.
Hin und wieder werden vom Thread daten auf der console ausgegeben.

Ist es irgendwie möglich die letzte Zeile mit "command: " zu fixieren?

Wenn die Ausgabe vom Thread das Consolen ende erreicht, möchte ich aber nicht das mein "command: " am ende verschwindet.

Sollte man das "command: " immer wieder neu ausgeben? Oder gibt es eine andere Variante?

Oder ist es besser den ganzen Output in einen "Buffer" zu schreiben und wenn er mehr als X Zeilen hat, werden die "rausgeschoben" und nur neues bleibt drin? Und darunter dann meine "Command: " Zeile?

Danke im vorraus.

MFG voidcore

18.10.2010 - 00:00 Uhr

verwendetes Datenbanksystem: -

Hallo,

ich habe in einen DataTable viele Zeitstempel. Diese möchte ich Filtern. Die Spalte ist als DateTime formatiert.


23.01.1980
11.04.1984
01.06.1970

Problem dabei, ich finde keine Möglichkeit den Filter oder Select auf den Monat zu setzen.
Ich möchte am ende nur den ausgewählten Monat sehen. Dabei ist es egal welche Tag oder welches Jahr da steht.

Danke im vorraus.

17.10.2010 - 21:33 Uhr

dataGridView1.DataError += new DataGridViewDataErrorEventHandler

Wer lesen kann ist klar im Vorteil 😕 Es stamd am ende des langen Dialog.

17.10.2010 - 20:01 Uhr

Hallo,

ich habe ein DataTable an ein DGV gebunden.

Column[0] ist vom Typ DateTime und gibt der User kein Datum ein bekomme ich eine lange aber berechtige Fehlermeldung. (datetime.parse usw. für den leihen bömische dörfer)

Wo kann ich diese Exception ändern in eine Meldung alle "Ihre Eingabe ist kein gültiges Datum"?

Der Fehler wird vor

dataGridView1.CellEndEdit += new DataGridViewCellEventHandler(dataGridView1_CellEndEdit);

schon ausgelöst. Wo kan ich noch ansetzen?

Danke im vorraus.

06.12.2009 - 15:41 Uhr

Floste, danke es Funktioniert nun mit diesen Interlocked.

Jedoch hätte ich eine Frage. Für was genau ist: Object obj


    ThreadPool.QueueUserWorkItem((Object obj)=>
    {
        action();
        Interlocked.Decrement(ref numStarted);
        if(numStarted==0)
        {
            wh.Set();
        }
    });

Mit dem Debugger kann ich leider nicht schauen, jedoch muss ich das angeben, da ich ansonst eine meldung mit Nullreference bekomme.

Danke im vorraus.

06.12.2009 - 00:23 Uhr

Fehler 1 Es konnte keine Instanz der abstrakten Klasse oder Schnittstelle "System.Threading.WaitHandle" erstellt werden.

bekomme ich bei

WaitHandle wh = new WaitHandle(false, ManualReset);
05.12.2009 - 21:51 Uhr

Die Anzahl der WaitHandles muss kleiner als oder gleich 64 sein.

Das genau ist mein Problem

05.12.2009 - 20:41 Uhr

[EDIT=herbivore]Threads zusammengefügt[/EDIT]

Guten Abend.

Ich habe eine List die mal 10 aber auch mal 200 Items hat.
Jeder Eintrag wird in einem Thread ausgeführt. Nun komme ich ab un an zu dem Problem das die Liste zu Lang ist und der Threadpool "überläuft".

Gibt es eine möglichkeit zu sagen .. mom es sind schon 50 Aufgaben drin, warte bis ein Queue frei ist und dann schiebe ein neues hinzu .. oder löst man das ganz anders?


List<ManualResetEvent> doneEvents = new List<ManualResetEvent>();
foreach (string Flotte in FlottenAZ) // myParser.FlottenAZ
{
    ManualResetEvent doneEv = new ManualResetEvent(false);
    doneEvents.Add(doneEv);
    clsFlotte f = new clsFlotte("NF_US", Flotte, "Arizona", "1", doneEv);
    //
    // FIXME: bei 200+ in List gibt der ThreadPool eine Expection da zuviel
    //
    ThreadPool.QueueUserWorkItem(f.FlotteAuslesenUS);
}

if (doneEvents.Count != 0)
    WaitHandle.WaitAll(doneEvents.ToArray()); // Warte bis alle Threads beendet wurden

Console.WriteLine("\nProgram Ende erreicht! Taste drücken um zu beenden!");
Console.ReadKey(true);
27.10.2009 - 18:34 Uhr

Habe


List<ManualResetEvent> doneEvents = new List<ManualResetEvent>();

doneEvents.Add(new ManualResetEvent(false)); 

WaitHandle.WaitAll(doneEvents.ToArray());


Vielen dank.

gfoidl, ich möchte gewisse sachen auslesen, und das kann in der anzahl unterschiedlich sein.

Um es flexible zu machen wollte ich es gern dynamisch gestalten. Und so klappts nun.

27.10.2009 - 16:55 Uhr

In dem Bsp. werden die doneEvents festgelegt, was ist wenn ich das aber dynamisch machen möchte?
Da ich nicht weiß wieviele threads am ende gestartet werden?

27.10.2009 - 13:12 Uhr

Halte dich fest, hier gibts nen richtig geiles Beispiel:

>

Danke.

27.10.2009 - 12:44 Uhr

Wird der ThreadPool im BGW ausgeführt?
Dann sollte dies doch auch richtig sein oder?


  public static void Main()
  {
    BackgroundWorker bgw = new BackgroundWorker();
    bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
    bgw.RunWorkerAsync();

    while (bgw.IsBusy)
      Thread.Sleep(10);

    Console.WriteLine("Main thread exits.");
    Console.ReadKey(true);
  }
  static void bgw_DoWork(object sender, DoWorkEventArgs e)
  {
    for (int i = 0; i <= 50; i++)
      ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), i.ToString());
  }
  static void ThreadProc(Object stateInfo)
  {
    Thread.Sleep((int)new Random().Next(5000, 10000));
    Console.WriteLine("Hello from the thread pool. Thread {0} ", stateInfo.ToString());
  }

27.10.2009 - 12:09 Uhr

Hallo.

ich habe eine consolen app welche mit threadpool arbeiet.
Wie kann ich der Anwendung sagen: warte bis threadpool abgearbeitet ist und mache dann ....

Derzeit habe ich:


  public static void Main()
  {
    Thread thread = new Thread(new ThreadStart(UpdateData));
    thread.Start();

    while (thread.ThreadState == ThreadState.Running)   // ignoriert er :(
      Thread.Sleep(10);

    Console.WriteLine("Main thread exits.");  // wird gleich angezeigt

    Console.ReadKey(true);
  }

  static void UpdateData()
  {
    for (int i = 0; i <= 50; i++)
    {
      ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), i.ToString());
    }
  }

  static void ThreadProc(Object stateInfo)
  {
    Thread.Sleep((int)new Random().Next(5000, 10000));
    Console.WriteLine("Hello from the thread pool. Thread {0} ", stateInfo.ToString());
  }


26.10.2009 - 13:40 Uhr

Nach dem ich mir SQLite angeschaut habe, und dort ein BSP gefunden habe welches mit 12k datensätze in wenigen Sekunden kopiert, musste ich es noch mal in FireBird probieren und hatte erfolg:

Evtl. hilft es den einen oder anderen später mal weiter.

Falls noch jemand Verbesserungen / Optimierungen sieht bitte bescheid geben. Danke


DataTable fb_liste = new DataTable("FleetDataNG");
DataTable mysql_liste = new DataTable("FleetDataNG");

try
{
    using (FbConnection fb_con = new FbConnection(fbConnString))
    {
        using (FbCommand fb_cmd = fb_con.CreateCommand())
        {
            fb_con.Open();
            fb_cmd.Transaction = fb_con.BeginTransaction();
            FbDataAdapter Fb_DA = new FbDataAdapter(fb_cmd);
            fb_cmd.CommandText = "SELECT * FROM FleetDataNG";
            Fb_DA.Fill(fb_liste);
            Console.WriteLine("Holen daten....");
            try
            {
                using (MySqlConnection mysql_con = new MySqlConnection(mySQLConnString))
                {
                    using (MySqlCommand mysql_cmd = mysql_con.CreateCommand())
                    {
                        mysql_con.Open();
                        mysql_cmd.CommandText = "SELECT * FROM FleetListerNG WHERE 1;";
                        MySqlDataAdapter myDA = new MySqlDataAdapter(mysql_cmd);
                        myDA.AcceptChangesDuringFill = false;
                        myDA.Fill(mysql_liste);
                        Console.WriteLine(mysql_liste.Rows.Count.ToString());
                        fb_liste.Merge(mysql_liste); // Listen zusammenfügen
                    }
                }
            }
            catch (MySqlException ex)
            {
                Console.WriteLine(ex.Message.ToString());
            }
            Fb_DA.InsertCommand = new FbCommand("INSERT INTO FleetDataNG SELECT * FROM FleetDataNG");
            FbCommandBuilder builder = new FbCommandBuilder(Fb_DA);
            Fb_DA.InsertCommand = builder.GetInsertCommand(true);
            Fb_DA.Update(fb_liste);
            fb_cmd.Transaction.Commit();
        }
    }
}
catch (FbException e)
{
    if (e.ErrorCode == 335544665)
        Console.WriteLine("Datensatz vorhanden!");
    else
        Console.WriteLine(e.Message.ToString());
}
25.10.2009 - 21:50 Uhr

        static void Main(string[] args)
        {
            if (File.Exists("FleetDataNG.fdb"))
                File.Delete("FleetDataNG.fdb");

            FbConnection.CreateDatabase(@"Database=FleetDataNG.fdb;ServerType=1");
            SQLExNonQuery(new FbCommand("CREATE TABLE FleetDataNG (hash varchar ( 32 ) NOT NULL PRIMARY KEY, host varchar ( 2 ) NOT NULL)"));
            SQLExNonQuery(new FbCommand("INSERT INTO FleetDataNG (hash, host) VALUES  ('asdqwe123', 'us');"));
            SQLExNonQuery(new FbCommand("CREATE TABLE EXT_TBL EXTERNAL FILE 'file.txt' (FNAME CHAR(10), LNAME CHAR(20), HDATE CHAR(8), NEWLINE CHAR(2));"));
            Console.ReadKey(true);

        }
        static void SQLExNonQuery(FbCommand cmd)
        {
            string fbConnString = "ServerType=1;Database=FleetDataNG.fdb;user id=SYSDBA;password=masterkey";
            try
            {
                using (FbConnection C = new FbConnection(fbConnString))
                {
                    C.Open();
                    cmd.Connection = C;
                    cmd.ExecuteNonQuery();
                }
            }
            catch (FbException e)
            {
                Console.WriteLine(e.Message.ToString());
            }
        }

Access to external file "file.txt" is denied by server administrator

Jemand dazu eine Idee?

25.10.2009 - 20:58 Uhr

In welchen format muss ich dann die .txt bringen?

FNAME CHAR(10),
LNAME CHAR(20),
HDATE CHAR(8),
NEWLINE CHAR(2)

"zehn zeichen" "20 zeichen" "datum" "\n"

Muss ich meine Datensätze auf 10 bzw. 20 zeichen auffülllen? .padleft etc?

25.10.2009 - 16:44 Uhr

juetho, kannst du mir evtl sagen wie man tricksen kann? Oder wo man darüber etwas lesen kann?

Danke.

edit: ich suche immernoch eine möglichkeit von mysql nach firebird zu "kopieren" (sql dump)

24.10.2009 - 13:53 Uhr

Habe nun die DB-Parallelitäts Probleme. Bezieht sich diees auf die Datenbank oder auf die Datensätze?


Firebird:

CREATE TABLE FleetDataNG (
hash varchar ( 32 ) NOT NULL PRIMARY KEY,
host varchar ( 2 ) NOT NULL,
server varchar ( 10 ) NOT NULL,
added DATE NOT NULL,
id varchar ( 30 ) NOT NULL,
fleet varchar ( 30 ),
squad varchar ( 30 ),
lastonline DATE,
joinhof DATE,
ranking bigint,
rankingt bigint );

Mysql:

CREATE TABLE `FleetListerNG` (
  `hash` varchar(32) NOT NULL,
  `host` varchar(2) NOT NULL,
  `server` varchar(10) NOT NULL,
  `added` date NOT NULL,
  `id` varchar(30) NOT NULL,
  `fleet` varchar(30) default NULL,
  `squad` varchar(30) default NULL,
  `lastonline` date default NULL,
  `joinhof` date default NULL,
  `ranking` int(11) default NULL,
  `rankingt` int(11) default NULL,
UNIQUE KEY `hash` (`hash`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


24.10.2009 - 11:41 Uhr

wie kann ich den rowstate ändern?


                        myDA.Fill(dtListe);  // DataTable shreiben

                        foreach (DataRow mydr in dtListe.Rows)
                            mydr.RowState = DataRowState.Added;  // kann den wert nicht festlegen, nur lesen

edit:

foreach (DataRow mydr in dtListe.Rows)
mydr.SetAdded();

wer lesen kann.

Gibt es eine Möglichkeit alles mit einmal ohne foreach?

24.10.2009 - 11:19 Uhr

Datensätze in Dataset laden und auf einmal speichern : 3 h

Gibt es irgendwo etwas zu lesen wie ich das machen kann?
Kenne bisher nur die fbcommand.executenonquery sache.

Oder DataSet.Fill(dtListe);

Nur wie wieder zurück?

24.10.2009 - 10:40 Uhr

verwendetes Datenbanksystem: MySQL und FireBird

Hallo,

ich möchte ein Datenbank abbild von Mysql nach Firebird machen.

Die Hauptdaten befinden sich in einer Mysql Datenbank. Diese möchte ich in eine Firebird datenbank exportieren. (komplett 1 zu 1)

Mit dem Myql Datareader einlesen und in Firebird einfügen dauert sehr lange.
Wie kann man es besser machen?

danke im vorraus.

18.10.2009 - 13:01 Uhr

        void backgroundWorkerUeberFleet_DoWork(object sender, DoWorkEventArgs e)
        {
            comboboxUeberFleet.SelectedValueChanged -= combobox_UeberFleet_SelectedValueChanged;
            FD.UpdateUeberFleet(((string[])e.Argument)[0], ((string[])e.Argument)[1],((string[])e.Argument)[2]); // Update das DataTable FD.UeberFleet
        }


        void backgroundWorkerUeberFleet_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            SetTable(FD.UeberFleet, this.dtUeberFleet); // Schreibt das FD.UeberFleet das ds der Form (via designer eingefügt)
            comboboxUeberFleet.SelectedValueChanged += combobox_UeberFleet_SelectedValueChanged;
            bindingSourceUeberFleet.Position = bindingSourceUeberFleet.Find("fleet", "Fleet Germany"); // default fleet
        }

dank herbivore. Es funktioniert!

18.10.2009 - 12:50 Uhr

@tabstop: somit kann ich verhintern das ich den bgw aufrufe .. jedoch löst das mein problem nicht da ich ja die geschichte updaten muss.

Mal die herivore sein link anschauen.

18.10.2009 - 11:09 Uhr

Hallo,

wie kann ich verhindern das sich der bgw selbst aufruft.
Ich nutze einen bgw um eine datenbank abfrage zu machen, ist diese fertig, nutze ich
bgw.RunWorkerCompleted um die zuvor eingelesen daten an das in das DataSet/DataTable zu senden. (invoke)

Dies Funktioniert auf.

Die ComboBox bekommt ihrer Daten über ein Bindingsource. Wenn ich nun nach dem ich die position ändern möchte, ruft sich der bgw selber wieder auf und meldet das er bereits läuft.

Ich habe mich mit bindingsourceUeberFleet..RaiseListChangedEvents und .SuspendBinding probiert. entweder die sourcen sind leer, oder werden nicht übernommmen oder selbes problem.

Hier noch mal der komplette Code



        void backgroundWorkerUeberFleet_DoWork(object sender, DoWorkEventArgs e)
        {
            FD.UpdateUeberFleet(((string[])e.Argument)[0], ((string[])e.Argument)[1],((string[])e.Argument)[2]); // Update das DataTable FD.UeberFleet
        }


        void backgroundWorkerUeberFleet_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            SetTable(FD.UeberFleet, this.dtUeberFleet); // Schreibt das FD.UeberFleet das ds der Form (via designer eingefügt)
            bindingSourceUeberFleet.Position = bindingSourceUeberFleet.Find("fleet", "Fleet Germany"); // Hier ruft sich der bgw selber auf.
        }


        private delegate void SetTableDelegate(DataTable TableVon, DataTable TableZu);
        private void SetTable(DataTable TableVon, DataTable TableZu)
        {
            if (this.InvokeRequired)
                this.Invoke(new SetTableDelegate(this.SetTable), new object[] { TableVon, TableZu });
            else
            {
                if (TableZu.Rows.Count >= 1)
                    TableZu.Rows.Clear();
                TableZu.Merge(TableVon); // DataTable übergeben
            }
        }


// Aufruf mit
backgroundWorkerUeberFleet.RunWorkerAsync(new string[] { comboBoxHost.Text, comboBoxServer.Text, comboBoxDatum.Text });


Danke im vorraus

voidcore

12.10.2009 - 00:01 Uhr

Ah danke, Beim versuch das nun so zu machen, habe ich gemerkt das mein bindingsource anschein fehlerhaft ist.

Mal der Sacher weiter nachgehen 😕 Aber denncoh danke, da ich wieder 1 gui zugriff vermeiden kann.

11.10.2009 - 19:16 Uhr

Ich nutze eine DropDownList. irgendwie will die Combobox nicht richtig.

Diese Zeile wurde aus einer TAbelle entfernt. und enthält keine Daten. BeginEdit() ermöglicht das Erstellen von neuen Daten in dieser Zeile.

Jedoch wird in der GUI Arizona angezeigt. Lese ich die Combobox.Text aus habe ich:

System.DataRowView

Danke im vorraus

11.10.2009 - 17:54 Uhr

Hallo,

ich habe ein DataTable an eine ComboBox gebunden. Update ich die DateTable, werden mir die Daten in der GUI angezeigt.

Greife ich mit Combobox.text auf die Daten zu bekommen eine RowNotInTableException 😕

Ich hab nach dem Update des DataTable ein bsserver.bindingreset(true); gemacht ....

mit, ohne kein erfolg.

Jemand eine Idee oder Tip?

Danke im voraus.

Achja, beim ersten ausfüllen der DataTables funktioniert es. Beim aktualisieren nicht 😕

10.10.2009 - 22:05 Uhr

Hallo,

irgendwie komm ich der Methode .Find nicht zurecht.

Habe nun ein anderen weg welcher geht, aber ich vermute es geht mit .Find einfach.

Falls mir jemand helfen kann .Find zu benutzen wäre ich Dankbar.


			int indexOfFG = -1;
			bool foundFG = false;
			foreach (DataRow dr in FDsrv.dtCbServer.Rows)
			{
				indexOfFG++;
				if (dr[0].ToString() == "Arizona") // Standard Auswahl
				{
					foundFG = true;
					break;
				}
			}
			if (foundFG)
				bSServer.Position = indexOfFG;

Habe Probiert es mit .Find zu machen... irgendwie zu bloed 😦


bSServer.Position = bSServer.Find("Arizona",FDsrv.dtCbServer.Rows);

Danke im vorraus

06.10.2009 - 00:14 Uhr

Habe einen Index auf Fleet, und added gelegt, und es wurde schneller 😃

Dennoch werde ich mir das mit den Schichten anschauen, und wenn ich nur eine Class machen für die datenbank zugriffe 😮

Danke an alle.

05.10.2009 - 22:44 Uhr

Ich habe keinen Index in meiner selbst erstellen Datenbank. Ich habe nur eine Unique Spalte um doppelte Einträge zu verhindern.

Auf welche Spalte(n) sollte man einen index legen? Wo macht es sinn und wo nicht?

Die meisten SQL Abfragen beinhalten host,server,id,fleet,added .. jedoch weiß ich nicht ob es sinn macht alle in den index zu nehmen.

05.10.2009 - 21:37 Uhr

Angenommen ich lege mir eine klasse an welche alle datenbank zugriffe erledigt.

diese daten in der klasse hinterlegt woher weiß meine gui wann die daten bereit stehen?
Gibt es dafür schon lösungen? oder gebe ich einfach einen wert zurück welchen ich dan auswerte?

Sorry fuer die "anfänger" fragen, aber ich merke das dass was ich bisher gemacht habe sehr simple war und möchte mich nun damit auseinander setzen.

Als leihen nicht einfach 😮

05.10.2009 - 16:53 Uhr

Ich habe mir ein wenig die 3 Schicht Sachen angeschaut.

Vieles wird in extra klassen ausgelagert und getrennt, aber hilft das mir bei dem eigentlichen Problem?
Da doch auch die Schichten in meiner GUI laufen?

05.10.2009 - 09:13 Uhr

Die Datenbank hat schon 5k+ einträge und wird wöchentlich mehr.

Angezeigt werden meist so 200-300 Datensätze.

Die Datenbank liegt lokal (embedded Firebird)

Das meiste läuft folgende ab:


		// Update DataGridView
		void UpdateDGVRanking()
		{
			if (toolStripComboBoxDatum.Text == "")
				return;
			FbCommand cmd = new FbCommand(@"SELECT (0), id,ranking,rankingt, (' ') FROM FleetDataNG where added = @ADDED AND fleet = @FLEET AND ranking > 0 order by ranking asc;");
			cmd.Parameters.AddWithValue("@FLEET",comboBoxFleetRank.Text);
			cmd.Parameters.AddWithValue("@ADDED",toolStripComboBoxDatum.Text);
			SQLGetTable(cmd, ds.Tables["dtRanking"]);  // DataTable aktualisieren
			// Spalte Nummerieren
			for (int i = 1; i <= ds.Tables["dtRanking"].Rows.Count; i++)
				ds.Tables["dtRanking"].Rows[i -1][0] = i;
		}


		// Updaten der DataTables
		public void SQLGetTable(FbCommand command, DataTable Table)
		{
			try
			{
				using (FbConnection C = new FbConnection(fbConnectionString))
				{
					C.Open();
					command.Connection = C;
					FbDataAdapter FbDA = new FbDataAdapter(command);
					Table.Clear();
					FbDA.Fill(Table);
				}
			}
			catch (Exception ex)
			{
				MessageBox.Show(ex.Message.ToString());
			}
		}

alles im GUI Thread 😕

05.10.2009 - 00:06 Uhr

Danke für die Infos, Also muss ich viel viel zum Thema Threads lesen 😃

04.10.2009 - 23:03 Uhr

Es geht in meinem Fall nur um das auslesen der Daten ich will nicht einmal was ändern.

Nur darstellen. Jedoch "blockiert" die Anwendung sobald ich einen anderen Datensatz lese.

Ich möchte aber nicht alles mit 1000 Threads machen um das blockieren zu verhintern.

04.10.2009 - 19:25 Uhr

JAck30lena,

kennst du irgendwo eine kleine tutorial wo man sich ein wenig einlesen kann. ich als Hobby Programmierer habe da nicht so viel Erfahrung.

Ich weiß was threads sind usw.. jedoch tue ich mich bei der Benutzung noch recht schwer.

danke im voraus

04.10.2009 - 17:19 Uhr

Habe schon alles gebunden, jede Comobox, jedes Datagridview alles via bindung.

Ich Update jeweils nur des DataTable . jedoch von der GUI aus 😕

Um zb. query zu erstellen greife ich auf die gui zu (textbox.text oder combobox.text)

Irgendwie ist schon "wenig" mit der gui gemacht ... aber gibt anscheint noch viel mehr Möglichkeiten 😕