Laden...

Forenbeiträge von falangkinjau Ingesamt 171 Beiträge

01.08.2007 - 21:25 Uhr

Hallo da_owa,

Wie kann ich verhindern, dass diese auch angezeigt werden?

Indem du sie nicht anzeigst. 😉 Du erstellst doch die Menüs.

Pseudocode:



string systemViews="Msys";
for (int i = 0; i < catalog.Tables.Count; i++)    
{

     if( catalog.Tables[i].Name.Contains(systemViews) == false )
     {  

           MenuItem menuItem = new MenuItem(catalog.Tables[i].Name);    
           Menu_Laden.MenuItems.Add (menuItem);
      }    
}

Das sollte eigendlich für dich völlig ausreichend sein.
Persönlich würde ich aber nicht auf die String-Methode Contains zurückgreifen, sondern es mi einer kleinen Regular Expression umsetzen.

Gruß falangkinjau

01.08.2007 - 21:03 Uhr

Hallo 4breeze,


SELECT DISTINCT schuljahr FROM deiner_tabelle

Gruß falangkinjau

12.07.2007 - 23:19 Uhr

Hallo CB.NET,

ich kann dir deine Frage leider nicht beantworten, aber vielleicht findest du hier noch ein Hinweis.

Gruß falangkinjau

12.07.2007 - 22:29 Uhr

Hallo kaepten,
wenn du das Userinterface(Menüs, Buttons oder was auch immer) sperren möchtest, dann sollte
der User meiner Meinung nach IMMER die Möglichkeit haben einen Hintergrundthread zu beenden der deutlich länger dauert als "10/100s". z.B.: durch einen Abbruchbutton.

Was für ein Buch ist das?Danke.

Gruß falangkinjau

12.07.2007 - 21:47 Uhr

Hallo Pedro,

ich bin mir nicht ganz sicher, ob dir das hilft.
So "ähnlich" sieht das bei mir immer aus und das funktioniert bestens.



void Main_FormClosing(object sender, FormClosingEventArgs e)
 {
      //_workingThread ist ein private Member der MainForm, der dann den
      //eigendlichen Hintergrundthread startet
      if (_workingThread != null && _workingThread.IsAlive)
      {
             if (MessageBox.Show("Hintergrundaufgaben werden durchgeführt!\n" +
                                              "Wirklich abbrechen?", "Info",
                                              MessageBoxButtons.YesNo,  MessageBoxIcon.Question) == DialogResult.No)
                {
                    e.Cancel = true;
                    return;
                }

                try
                {
                      this.Cursor = Cursors.WaitCursor;
                
                       _workingThread.Abort();

                        while (_workingThread != null && !_workingThread.Join(1000))
                                 Application.DoEvents();
        
                        //Statusbar bzw. Progressbar zurücksetzten oder was auch immer
                }
                finally
                {
                      this.Cursor = Cursors.Default;
                    _workingThread = null;
                 }               
       }
}

Gruß falangkinjau

10.07.2007 - 15:05 Uhr

Hallo citizen.ron,
besten Dank für die Erläuterung. 👍

Gruß falangkinjau

10.07.2007 - 10:02 Uhr

Hallo citizen.ron,

schliesse mich langalaxy an und würde micht auch sehr freuen über mehr Informationen/Material oder Beispiele.

Gruß falangkinjau

30.06.2007 - 18:41 Uhr

Hallo turkel,

gebe mal bei Alter in der Textbox Text ein. Wenn das geht, dann gebe das Alter in '12' oder so "12". Wahrscheinlich mußt du dann noch maskieren mit . , z.B.: &#39;12&#39;.

Probier das mal, ansonsten wüßte ich da auch nicht weiter.

Gruß falangkinjau

[Edit]
Wie sieht den der mit Werten generierte Insertbefehl genau aus,also exakt vor cmd.ExecuteNonQuery? Laut Fehlerbeschreibung hat dein Insertstring einen Syntaxfehler.

30.06.2007 - 18:24 Uhr

Hallo turkel,
nö, dann ist es in Ordnung und du brauchst natürlich nichts umwandeln.

Was für ein Fehler wird geworfen? Poste den mal, ansonsten ist das nur ein rumstochern.

Gruß falangkinjau

30.06.2007 - 18:17 Uhr

Hallo torkel,

Alter vielleicht vorher auch in entsprechenden Type umwandeln???

Gruß falangkinjau

29.06.2007 - 16:38 Uhr

Danke FZelle,

das habe ich mir schon fast gedacht.
Ist eigendlich sehr schade und mag verstehen wer will, dass nur die obere Liga umfassend unterstützt wird.

Gruß falangkinjau

29.06.2007 - 15:28 Uhr

Hallo,

ich studiere und teste gerade die SCSF.

Beim Erstellen eines Business Modul mit dem Wizard erhalte ich den Fehler, dass ich nicht die richtige VS-Version habe.
Die eingeschaltete Option "Create a unit test project for this module" scheint definitiv dafür verantwortlich zu sein. Hier wird wohl eine Teamedition vorausgesetzt. Wenn ich die Option herausnehme, dann funktioniert alles wunderbar. Halt nur ohne den Testprojekten, die ich aber auch gerne hätte.

Kennt jemand von euch ein Workaround, so das die Testprojekte auch mit einer Professionalediton generiert werden?

Gruß falangkinjau

26.06.2007 - 10:24 Uhr

Hallo Noodles,

doch doch, so meinte ich das schon. Die Klasse(n) sollte schon entsprechend implementiert sein. Davon bin ich ausgegangen. 😉

Hallo cluening,
dem Link folgst du und wirst entsprechende Lösungsansätze finden. Dort hat Noodles zwei Links eingestellt die eigendlich alles erklären.

Gruß falangkinjau

26.06.2007 - 09:42 Uhr

Hallo cluening,

das Sortieren überlässt du dann dem DataGridView bzw. dem Anwender. Das DataGridView hat eine Eigenschaft für das Sortieren. Der Name der Eigenschaft fällt mir gerade nicht ein. Mußt du mal in der Doku nach lesen. Ist diese auf true, dann kann der Anwender im Columnheader auf ein Dreieck klicken und entsprechende Spalte wird aufsteigend bzw. absteigend sortiert.

Sollte theoretisch eigendlich schon so gehen.

Gruß falangkinjau

27.04.2007 - 20:12 Uhr

Hallo,

ich habe meinen Laptop neu aufgespielt.

Hatte zuvor ein kostenloses Plugin welches es gestattete ein etwas erweiterten XML-Rumpf für die Dokumentation einer Funktion zu generieren.
Mit der Maus auf die Funktion im Code, rechte Taste, Auswahl des Plugin und dann wurde generiert.

Problem ich finde es einfach nicht wieder, weil ich mit Sicherheit den falschen Suchbegriff eingebe.

Vielleicht eine Idee?

Gruß falangkinjau

24.04.2007 - 23:17 Uhr

Hallo janismac,

jein.

Menüpunkt Ansicht/Klassen auswählen.
Nun sollte ein Reiter Klassen aufgehen. Dort kannst du nun durch die eingebundenen Assemblies und natürlich den selbstgeschriebenen Klassen browsen. Ein Projekt muß im Gegensatz zu VS auf sein.

Für den Rest wird der Reflector von L.Röder und die Addins empfohlen.

So komfortabel wie im VS, also gleich mit Doku so vorhanden, ist es nicht.

Gruß falangkinjau

20.04.2007 - 23:02 Uhr

Hallo,

ja, seit fast nun dreißig Jahren die guten alten Karo.
Das sind filterlose Zigaretten. Das nur für die im Tal der Ahnungslosen ( da wo die Pershing-Raketen stationiert wurden sind ).

Da soll mir mal einer Erzählen man stirbt früher vom Rauchen. Ich habe schon Leute gehen sehen die haben nicht geraucht. 😁

Ernährung,Sport und Alkohol: No Comment. Wurde ja nicht gefragt. 😉

So, ich gehe jetzt mal auf den Balkon eine Zigarette rauchen.

Gruß falangkinjau

27.03.2007 - 10:38 Uhr

Hallo TheVision,

Kommando zurück! Noch besser mein Posting löschen. Irgendwie war ich auf der Schiene, daß du mit CF arbeitetest. Keine Ahnung wie ich darauf gekommen bin.

Sorry

Gruß falangkinjau

27.03.2007 - 10:20 Uhr

Hallo TheVision,

ja diese Aussage kenne ich sogar sehr gut und zu 100% ist es bei mir hier folgender Grund gewesen:

Der User versucht eine Anwendung für den PocketPC auf dem Desktop PC zustarten. Frage mal nach!

Ich benutze nicht das CF.

Gruß falangkinjau

23.03.2007 - 10:45 Uhr

Hallo Haggy,

war gerade auch auf der Suche und habe nicht nur den Link hier im Forum 😁 gefunden.

Das könnte auch noch was sein. Zumindest ein vernünftiger Preis.

MemProfiler

Gruß falangkinjau

19.03.2007 - 14:14 Uhr

Hallo FZelle,

naklar habe ich mir das angeschaut und ausprobiert.

Generiert wird dann aber über ein MemoryStream! Sofern gewünscht.

Also, ich finde das schon einen kleinen winzigen Fortschritt.

  1. Die hbm.files müssen nicht mehr extra eingetippt werden und müssen nicht als embedded Resource bzw. physisch vorliegen.
  2. Sie werden für den Anwender(Entwickler) einfach nicht mehr benötigt.

Wie Praxistauglich das dann alles sein wird keine Ahnung. Schauen wir mal.

Gruß falangkinjau

19.03.2007 - 13:15 Uhr

Hallo 0815Coder,

...und mit dem Attribut basierten Mapping einfacher zu bedienen wäre.

Mit dem noch nicht releasedem NHibernate 1.2. geht das doch wunderbar. So zumindest mein erster Eindruck.

Und nix da mehr mit externen hbm.files, wenn man diese nicht möchte.
Das Thema NHibernate 1.2.x wird in einem Artikel in der letzten Dot.Net behandelt.

Gruß falangkinjau

13.03.2007 - 22:38 Uhr

Hallo Knub,

danke schön für den Hinweis.

Die Notation ist mir noch nie aufgefallen, da ich es noch nicht benötigt habe.

Jetzt ist es aber klar:
Für z.b.: Nullable<Int32> x kann auch das Synonym Int32? x als Notation geschrieben werden.

Danke und Gruß falangkinjau

13.03.2007 - 16:31 Uhr

Hallo,
in der letzten dot.net wurde das beta 1.2 von nHibernate behandelt.
Dort in Listing 2 gibt es folgende Zeile:


private long? id=null;

Mit dem Fragezeichen kann ich nichts anfangen. Beispiellisting wird mit 0 Fehlern,Warnungen kompiliert.

Hat jemand eine Erklärung für mich?

Gruß falangkinjau

09.03.2007 - 20:07 Uhr

Hallo Morpheus,

was ist dir da nicht gelungen?

In Projekteigenschaften -> Buildereignisse -> Befehlszeile für Postbuildereignisse

bei mir sieht das in der Regel so aus:


IF "$(ConfigurationName)"=="Debug" Goto Exit

"C:\DeinInstallationsverezeichnisvonSandcasle\SandcastleBuilderConsole.exe " "$(SolutionDir)XXXX\DeineSandcastleProjekt.shfb"

REM "noch andere Sachen wie z.B. aufräumen"

:Exit

SolutionDir ist nicht unbedingt erfoderlich. Das liegt bei mir nur im entsprechenden Projekt. Wichtig, Path zum Sandcastleprojektfile.

Das Sandcatleprojekt legst du natürlich vorher an.

Hallo gollum9,
ich finde Sandcastle gut und hatte damit noch nicht die von dir angesprochenen Probleme. Im Gegenteil, ich habe aus den Sourcen sogar sehr viel gelernt.

Gruß falangkinjau

08.03.2007 - 23:26 Uhr

Hallo Stuart,

Test negativ.

Unsinn ist hier geschmeichelt gewesen.

Die Exe wird aufgerufen und ausgeführt. Der Screenshot ist natürlich vom Client.
Egal ob diese direkt, aus einer Batchdatei oder einem Perlscript gestartet wird.
Immer das gleiche Resultat.

Was habe ich daraus gelernt. Process bezieht sich wohl immer auf den Rechner wo dieser erzeugt wird, egal wo das Script liegt und aufgerufen wird.

Was aber total dämlich gedacht war, drücke mal in der Console Ctrl+PrtSc. Unter Dos!?
Ich kann mich garnicht erinnern, ob das unter Dos überhaupt so einfach ging.

Sei es drum, hier muß wohl etwas tiefer gestochert werden.
Service?Remoting?Schau wir mal.

Nur zur Vollständigkeit und so wie es nicht gehen kann und nicht nochmal jemand auf so eine dumme Idee kommt:

Teil 1 liegt auf dem Client.


using System;
using System.Drawing;
using System.Windows.Forms;
using System.Diagnostics;

namespace Client
{
	
	class Client:Form
	{

		private PictureBox pb;
		
		public Client():base()
		{
			this.Text = "Capture ScreenShot Part 1";
			
			Panel p = new Panel();
			p.Dock = DockStyle.Fill;
			this.Controls.Add(p);
			
			pb = new PictureBox();
			pb.BorderStyle = BorderStyle.Fixed3D;
			pb.Dock = DockStyle.Fill;
			p.Controls.Add(pb);
			
			ToolStripButton tsb = new ToolStripButton("Capture ScreenShot");
			tsb.DisplayStyle = ToolStripItemDisplayStyle.Text;
			tsb.Click += new EventHandler(tsb_Click);
			
			ToolStrip ts = new ToolStrip(tsb);
			ts.Dock = DockStyle.Top;
			this.Controls.Add(ts);
		}
		
		private void tsb_Click(object sender, EventArgs e)
		{
			
			try
			{
				//Startparameter für den Prozess
				ProcessStartInfo psi = new ProcessStartInfo(@"X:\TestCaptureScreenShot\starter");//starter ist eine Batchdatei. Hier wird nur Console.exe aufgerufen, X ein gemapptes Laufwerk
				psi.CreateNoWindow = true;
				
				//Prozess für die Konsolenanwendung
				Process p = new Process();
				p.StartInfo = psi;
				p.Start();
				
				//Kurz warten
				System.Threading.Thread.Sleep(2000);
				
				//Bild in PictureBox anzeigen
				//X ist ein gemapptes Laufwerk
				pb.ImageLocation = @"X:\TestCaptureScreenShot\screenshot.png";
				pb.Load();
			}
			catch(Exception ex)
			{
				System.Diagnostics.Debug.WriteLine(ex.Message);
			}
			
			
		}
	}

	class Program
	{
		static class App
		{
			[STAThread]
			public static void Main()
			{
				Application.Run(new Client());
			}
		}
	}
}

Teil 2 liegt auf dem gemappten Laufwerk


using System;
using System.Drawing;
using System.Windows.Forms;

namespace ScreenShotApp
{
	static class Program
	{
		[STAThread]
		static void Main()
		{
			Form f = new Form();
			f.Hide();
			f.Load += delegate 
			{
				SendKeys.SendWait("+{PRTSC}");
			
				if ( Clipboard.ContainsImage() )
				{
					Image image = Clipboard.GetImage();
					image.Save(@"d:\TestCaptureScreenShot\screenshot.png");//d ist die Partion auf dem gemappten Laufwerk
				}
				Application.Exit(); 
			
			};
					
			Application.Run(f);
		}
	}
}

Gruß falangkinjau

08.03.2007 - 22:40 Uhr

Hallo Deletemaster,


private void tsb_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection("server=XXXXXX\\SQLEXPRESS;Trusted_Connection=yes;database=Test");
            SqlCommand sqlCommand = new SqlCommand("UPDATE [TEST].[dbo].[TestDeletemaster] SET date=@date WHERE id=@id", sqlConnection);

            DateTime dt = DateTime.Now;

            sqlCommand.Parameters.AddWithValue("id", 2);
            //sqlCommand.Parameters.AddWithValue("date", dt);//Aktuelles Datum wird geschrieben
            //sqlCommand.Parameters.AddWithValue("date", String.Empty);//1.1.1900 wird geschrieben
            sqlCommand.Parameters.AddWithValue("date", DBNull.Value);// NULL wird geschrieben

            try
            {
                sqlConnection.Open();
                sqlCommand.ExecuteNonQuery();
            }
            catch(Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }
            finally
            {
                sqlConnection.Close();
            }


        }

Bei mir ist für Spalte date NULL erlaubt. Siehe Tabellenstruktur oben UND
wenn deine Spalte DateTime ist dann schreibe auch ein Datum und nicht String wie von FZelle schon gesagt.

Gruß falangkinjau

08.03.2007 - 20:29 Uhr

Hallo Deletemaster,

ich habe das mal ausprobiert mit MSSQLEXPRESS. Meine erste Tabelle und Zugriff auf ein MSSQL-Server. 😁

Habe mir eine Tabelle gebastelt oder besser zusammen geklickt:


USE [TEST]
GO
/****** Objekt:  Table [dbo].[TestDeletemaster]    Skriptdatum: 03/08/2007 20:08:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TestDeletemaster](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[date] [datetime] NULL
) ON [PRIMARY]

Habe mit dieser schönen Managmentconsole dann ein paar Daten eingefügt.

Wenn ich dann nichts eingebe, dann steht da auch null.

Habe das auch mit C# Code probiert und das hat auch funktioniert.

Allerdings habe ich es über eine gebundene Source gemacht.

So sieht das bei mir aus mit dem Updatecommand. Achtung ist nicht schön, aber darum geht es ja auch nicht.


private void tsb_Click(object sender, EventArgs e)
{
SqlConnection sqlConnection = new SqlConnection("server=XXXXXX\\SQLEXPRESS;Trusted_Connection=yes;database=Test");
            SqlCommand sqlCommand = new SqlCommand("UPDATE [TEST].[dbo].[TestDeletemaster] SET date=@date WHERE id=@id", sqlConnection);

            sqlConnection.Open();
            _adapter.UpdateCommand = sqlCommand;
            _adapter.UpdateCommand.Parameters.Add("id", SqlDbType.Int, sizeof(Int32), "id");
            _adapter.UpdateCommand.Parameters.Add("date", SqlDbType.DateTime, 8, "date");
            
            
            DataTable dt = _bs.DataSource as DataTable;

            try
            {
                _adapter.Update(dt.GetChanges());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                sqlConnection.Close();
            }
}

Die Daten werden über eine BindingSource in ein DataGridView geladen und dort bearbeitet und über einen Button wird der Updatecode aufgerufen.

Gruß falangkinjau

08.03.2007 - 11:37 Uhr

Hallo Deletemaster,

nö, so kommen wir nicht weiter.

Wie sieht deine Tabellenstruktur aus????? Zeig mal wie die DDL für die Spalte Datum aussieht.

So was in der Art möchte ich von dir sehen:
Create Table xxxx
(
spaltedatum DATETIME NOT NULL DEFAULT XXX,
);

Gruß falangkinjau

08.03.2007 - 10:46 Uhr

Hallo Deletemaster,

steht jetzt in der Datenbanktabelle wirklich null (NICHTS) drin? Also auch kein leerer String oder sowas.

Wenn dem so ist, dann probiere mal als nächsten Schritt die Absetzung des Befehls ohne Nutzung von Parametern:


cmd_GebUpdate.CommandText = "UPDATE <Tabelle> SET geburtsdatum = null WHERE vrn = 1234"; // für null sollte auch DEFAULT gehen, so jedenfalls bei MySql bei MSSQL weiß ich es nicht

Worauf ich hinaus möchte ist das ich vermute, daß du in deiner Tabelle die Spalte Datum NOT NULL definiert hast und null bzw. ein leerer Text ist halt kein gültiger Datumswert.

Schau mal nach!

Gruß falangkinjau

08.03.2007 - 09:59 Uhr

Hallo Deletemaster,

aktzeptiert deine Spalte in der DATENBANK-TABELLE überhaupt null als Defaultvalue? Ein richtiges NULL und nichts anderes!

Dann probiere bitte erstmal auf der Console oder mit einem anderen Tool ein Update etc. mit deinen zu erwartenden Werten und auch solche die nicht rein dürfen.
Was passiert da?

Gruß falangkinjau

07.03.2007 - 16:29 Uhr

Hallo gollum9,

  
string url;  
   string destinationUrl;  
    
   void SampleClass(string url)  
   {  
      url = url;  
      // oder  
      this.url = url; // geht zwar, aber ist pfui in meinen Augen  
   }  
  

Warum ist das Pfui in deinen Augen? Wo ist das Problem?

Gruß falangkinjau

07.03.2007 - 15:49 Uhr

Hallo Taggert,

bin gerade in einem anderen Thread auf www.pinvoke.net gestossen und habe folgende Funktion entdeckt die du eigendlich brauchst: BatterieStatus

Gruß falangkinjau

07.03.2007 - 14:28 Uhr

Hallo stuart-spelle,

ich werde es morgen Nachmittag mal testen.
Geht jetzt und hier nicht, da ich nur einen Rechner habe.

Gruß falangkinjau

07.03.2007 - 13:55 Uhr

Hallo DarKlajid,

ich habe definitiv schon so ein perl-script eingebettet in einer *.cmd welches der Client über Process aufruft so ausgeführt. Was soll ich sagen es funktioniert.

Gruß falangkinjau

07.03.2007 - 13:44 Uhr

Hallo Stuart-Spelle,

noch was zur Verwirrung 😉 , da ich denke das Remoting hier etwas übertrieben ist.

Du kannst natürlich den Code gleich in eine consolenapp packen und auf den Server ablegen.
Vom Client rufst du die Exe dann über Process auf. Console zeigst du nicht an.
Spannend ist noch, ob wirklich das Bild vom Server aufgenommen wird oder nicht.
Kann ich jetzt leider auch nicht probieren.

Vorausgesetzt ist hier, daß der Clientcomputer das Laufwerk zum Server, wo die exe bzw. das dann gespeicherte Bild liegt, gemappt hat. Zugriff etc. muß natürlich vorhanden sein.

Dann kannst du dir das Bild ganz normal holen, so als ob es lokal gespeichert ist.

Zu Prosecc und starten von Consolenanwendungen gibt es zig Beiträge im Forum.

Gruß falangkinjau

07.03.2007 - 13:05 Uhr

Hallo stuart-spelle,
ich dachte du hast schon deine Remote-Client Anwendung!?

Der Code wird auf dem Server(Remote) ausgeführt. Das Bild speicherst du natürlich auch auf dem Server.
Die Frage ist hier noch, ist es überhaupt notwendig das ImageObject auf dem Server abzuspeichern bzw. kann es nicht gleich dem Client zur Verfügung gestellt werden? Das würde ich halt mal ausprobieren, da ich denke das das so gehen muß. Sind ja auch nur Bytes die übers Netz geschoben werden.

Auf dem Client kannst du dann ja machen was du willst mit dem ImageObject bzw. dem abgespeicherten Bild(du weißt doch wo es liegt).

So nur als Idee.

Wenn es garnicht weiter geht und noch ein paar Tage Zeit hat, dann kann ich mir das ja mal nächste Woche anschauen, da mich das mit den Remoting auch interessiert. Networkstream könnte hier eventuell auch noch helfen.

Gruß falangkinjau

06.03.2007 - 23:36 Uhr

Hallo stuart-spelle,

erstelle einfach ein Bild vom Remotecomputer und hole dir das Bild zur weiteren Verwendung bzw. Anzeige:

Code der auf der Remotemaschine ausgeführt wird:


SendKeys.SendWait("+{PRTSC}");

 if (Clipboard.ContainsImage())
{
      Image image = Clipboard.GetImage();
      image.Save(@"X:\screen.png");
}

Sollte theoretisch so funktionieren.

Gruß falangkinjau

06.03.2007 - 12:42 Uhr

Hallo DaRula,

folgendes Beispiel studieren, kopieren und anpassen: Hosting von Controls in DataGridView

Gruß falangkinjau

05.03.2007 - 14:06 Uhr

Hallo Schamese,

was machst du mit den Exception die in der Funktion InitializeComponent() passieren könnten und nicht behandelt werden?

Gruß falangkinjau

05.03.2007 - 12:40 Uhr

Hallo Qt21580,

Auszug eines Beispiels aus MSDN zu DataSet.DataTable.Select:


string filterExp = "Status = 'Active'";
string sortExp = "City";
System.Data.DataRow[] drarray = dataSet1.Customers.
    Select(filterExp, sortExp, System.Data.DataViewRowState.CurrentRows);

....usw.

Übertragen auf deine Herausforderung heißt das:

  1. Setze filterExp auf einen Wert der immer alle Datensätze liefert.
  2. sortExp erhält den Namen deiner Datumspalte.

Jetzt erhältst du ein DataRow-Array welches sortiert sein sollte. Habe ich nicht probiert. Die erste oder letzte Spalte sollte dein gesuchter Datensatz sein.

Unabhängig davon, solltest du prüfen ob es nicht besser ist den Datensatz direkt aus der Datenbank zu holen. Ist meiner Meinung nach einfacher ein Select zu basteln,
welches dir diesen einen gewünschten Datensatz zurück gibt.
So in der Art (MySql-Syntax):

SELECT irgendwas FROM foo ORDER BY datum LIMIT 1

Gruß falangkinjau

[edit]
Die erste oder letzte ZEILE und nicht Spalte...
[/edit]

05.03.2007 - 12:02 Uhr

Hallo Jamey,

da gibt es eigendlich nicht viel zu erklären und was noch viel schlimmer ist, ich bin auch kein guter Tutor. 😁

Das Prozentzeichen ist in diesem Fall nur einen Platzhalter(Jokerzeichen, Wildcard) für n bis n+1 Zeichen.

In deinem Fall sagt das Prozentzeichen nichts anderes, daß jedes Zeiche(n) gefunden werden wird sofern vorhanden.

Ähnliches gibt es auch z.B.: bei der Dateisuche. Hier kann das * für irgend was stehen.
Beispiel: *.txt findet auf einem winsystem Dateien mit Endung .txt.

Vielleicht hast du ja Glück und ein Akademiker 😉 schaut rein und kann dir das dann richtig erklären.

Gruß falangkinjau

[EDIT]
Da war jemand schneller.
[/EDIT]

05.03.2007 - 11:12 Uhr

Hallo Jamey,

nehm mal das erste Prozentzeichen raus. Dann sollte das eigendlich schon klappen.

Gruß falangkinjau

20.02.2007 - 18:34 Uhr

Hallo Ali-T,
der Reader ist der performanterer Weg. So ist es zumindest bei mir der Fall gewesen.

Die Frage ist natürlich immer noch was man dann mit den Daten in der Schleife machen möchte.

Du kannst und solltest das auf jeden Fall mit richtigen Daten testen. Clientseitig einfach mal mit z.B. System.Diagnostic.Stopwatch die Zeit messen.

Möchtest du nicht auf DataTable verzichten, dann gibt es noch folgende Variante. Die war bei mir schneller als deine erste Variante und langsamer als deine zweite Variante:

Beispiel:


DataTable table = new DataTable("table");
string selectCom = "SELECT * FROM `table` WHERE `ID` = " + id;
MySqlDataAdapter readGeb = new MySqlDataAdapter(selectCom, con);
IDataReader reader = readGeb.SelectCommand.ExecuteReader();
table.Load(reader);

Gruß falangkinjau

16.02.2007 - 12:47 Uhr

Hallo barzelona,

o.k. ich habe es verstanden.

Nutze doch die Form.Tag Eigenschaft für deinen Index.

Gruß falangkinjau

16.02.2007 - 12:18 Uhr

Hallo bhelbig,

Fall 1:
Exceltabelle mit Spaltenüberschrift:
die Exceltabelle fängt so an!!!

ZEILE 1: Spalte A Spalte B Spalte C
und dann geht es mit Zeile 2 weiter
Zeile 2: Daten 1 Daten 1.1 Daten 1.2
Zeile 3: Daten 2 Daten 2.1 Daten 2.2
Zeile 4: Daten 3 Daten 3.1 Daten 3.2
usw.

Fall 2: ohne Spaltenüberschrift:
Zeile 1: Daten 1 Daten 1.1 Daten 1.2
Zeile 2: Daten 2 Daten 2.1 Daten 2.2
Zeile 3: Daten 3 Daten 3.1 Daten 3.2
usw.

Ist dir das jetzt klar warum?

Die erste Zeile ist im Fall 2 die Spaltenüberschrift schon in der DataSource/DataView.
Du zeigst alles korrekt an.

Da hast du grundsätzlich noch kleinere Probleme mit diesem Weg.

Was ist wenn in Spalte1 Daten X irgend ein Zeichen steht, welches nicht erlaubt ist? Du erhälst eine Exception.
Was ist wenn der User die Checkbox anklickt und es gibt keine Überschriften?

Ich denke es ist besser das DataGridView per Code zu füllen und nicht über eine DataSource.

Gruß falangkinjau

[Edit]
Was ist wenn in Spalte1 ... ich meine ZEILE1
[/Edit]

16.02.2007 - 11:18 Uhr

Hallo barzelona,
Stop!

Was ist den oben in deinem Code das MDI-Child?

Weil, einmal sagst du


form.MdiParent = this;  // Hier ist form MDI-Parent und this das MDI-Child. Ist this das MDI-Child

und dann weiter unten, aber auskommentiert


form.BringToFront //Hier wolltest du das Hauptfenster? - MDI-Parent? in den Vordergrund bringen. Ist es aber wahrscheinlich schon.

Da stimmt was nicht. Da sollten wir erstmal klären.

Gruß falangkinjau

16.02.2007 - 11:07 Uhr

Hallo bhelbig,

Also dachte ich mir ich setze eine Checkbox rein über die der Anwender steuern kann ob die erste Zeile Daten oder Überschriften enthält. Im Falle von Daten sollen eigene Überschriften erstellt werden.

Ich denke, du filterst die hier schon aus.

Gruß falangkinjau

16.02.2007 - 10:38 Uhr

Hallo bhelbig,

du mußt natürlich den DataGridColumns sagen mit welcher Spalte der DataSource gemappt werden soll.

Gruß falangkinjau

[Edit]


 deineColumn.DataPropertyName = "der Name wie die Spalte in der DataSource/DataView";

[/Edit]