Laden...

Forenbeiträge von schnecke Ingesamt 223 Beiträge

20.07.2005 - 11:20 Uhr

Original von Noodles
Mit dataGrid.VisibleRowCount erfährst Du schonmal wieviele es sind.

Das kriege ich ja auch so raus:

ds.Tables["Tabelle"].DefaultView.Count;

... wenn ich vorher nen RowFilter gesetzt habe.

Original von Noodles
musst Du selbst Hand anlegen.

... wie meinst du das jetzt? Hast du ein Beispiel...?!

20.07.2005 - 10:55 Uhr

Die Zeilen, die aktuell im DataGrid angezeigt werden, nachdem ich irgendwelche RowFilter o.ä. angewendet habe. 🙂

20.07.2005 - 09:52 Uhr

Da muss sowas rein:


[STATthread]
public void Main(string args[])
{
       //...
}

20.07.2005 - 09:49 Uhr

Hmmm... leider keine Antwort... vielleicht habe ich mich auch zu schwer ausgedrückt... also ich möchte vereinfacht sowas:

Die Rows einer Tabelle eines DataSets, die gerade im Datagrid angezeigt werden (also die aktuelle Filterungsansicht - nicht alle Rows!), am Besten als DataRow[]. Habe es über ds.Tables["tabelle"].DefaultView versucht aber das gibt ja nur ein DataView zurück... ich möchte aber irgendwie an die Rows kommen....
ich weiß echt nicht wie.... hilfe

19.07.2005 - 12:24 Uhr

Habe an ein DataGrid ein DataSet gebunden, aus dem eine DataTable angezeigt wird. Beim Drucken wandere ich durch die Tabelle im DataSet und konvertiere alles in Strings, mache DrawString etc. usw. Klappt auch alles mit dem Drucken.

Doch er druckt per default immer die ganze DataTable, die im DataSet hängt. Wie kann ich ihm sagen, "drucke nur die Sachen aus der DataTable, die gerade als DefaultView im DataGrid angezeigt werden"... das geht doch bestimmt, denn das DefaultView ist doch auch nur ein Set und das müsste ich doch auslesen und meiner Druckfunktion als Quelle übergeben können (und nicht mehr das ganze DataSet).... oder geht das doch nicht... ich sehe es gerade nicht... X(

Grüße,
schnecki

19.07.2005 - 10:13 Uhr

Ja... das würde sicherlich auch die Zeile markieren, aber das habe ich ja jetzt schon über den Tipp von Cypirinha hinbekommen.... es geht ja nur noch um die Farbe der Zeile.... =)

19.07.2005 - 10:05 Uhr

Hi Cypirinha,

der Tipp mit dem CurrentCellChanged Event hat gefruchtet, dass geht schonmal mit dem Selektieren der ganzen Zeile. Nur auf das Setzen der Hintergrundfarbe der Zelle reagiert er noch nicht.... das ist auch nicht sooo schlimm, aber würde mich schon interessieren... also wenn du oder jemand anderes noch ne Idee hat, wäre das toll 🙂

Bisher mache ich es so:


dataGrid1.SelectionBackColor = Color.Pink;

18.07.2005 - 14:00 Uhr

So.... bei diesem Thema bin ich auch gerade und bevor ich ein neues Thema erstelle, wollte ich mal hier weiter schreiben. 8)

Was möchte ich? - In einem DataGrid eine Zelle klicken und die "geklickte" Zeile komplett farbig markieren.
Wie weit bin ich? - Zeile heraus finden geht, aber mehr auch nicht... Der Code:


void DataGrid1MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{	
	DataGrid.HitTestInfo row = dataGrid1.HitTest(e.X, e.Y);		
    if(row.Type == DataGrid.HitTestType.Cell)
	{
		dataGrid1.SelectionBackColor = Color.Pink;
		dataGrid1.Select(row.Row);			
    }
}	

... woran liegt es nun?
Wenn ich nach der Zeile dataGrid.Select() ein MessageBox.Show("Hallo") mache, wird für den Moment, wo die MessageBox gezeigt wird, die ganze Zeile selektiert, das geht also. Nur die Farbe ist immer noch die gleiche... wo fehlt was?!

18.07.2005 - 11:28 Uhr

Sweetness Noodles.... du bist spitze! 👍
Das habe ich gesucht ... und es klappt... 😁

Hatte das mit HitTest schon mal erst drin gehabt, dann funktionierte etwas anderes nicht und dann habe ich es wieder rausgenommen und nicht mehr dran gedacht, dass ich das hätte nehmen können.... 🤔

Merci gracias und thank you so much! 🙂

18.07.2005 - 10:59 Uhr

Ahhhh! 8o
Das ist doch mal eine Information. Die habe ich nirgends finden können.... und wenn es schon nicht so geht.... wie dann?!?! Es MUSS doch irgendwie gehen.... =)

Dann noch ne andere Frage... ich habe eine Funktion, in der auf Doppelklick in eine Zelle des Datagrids der Wert in der jeweiligen Zelle meines Datagrids ausgegeben werden soll, sagen wir einfach mal in einer MessageBox. Das hier habe ich:


DataView dv = ds.Tables["Kunden"].DefaultView;
dataGrid.DataSource = dv;
DataRowView drv = dv[dataGrid.CurrentRowIndex];
MessageBox.Show("inhalt:" + drv[1].ToString() );

In der Ausgabe in der MessageBox ist ein Fehler: er gibt immer den Wert der Zelle, die ich vorher selektiert habe. Klicke ich z.B. auf den Wert "hallo" bekomme ich einen falschen Wert. Klicke ich danach auf "Hallo2" ist in meiner Ausgabe "hallo". Klicke ich dann auf "Hallo3" ist die Ausgabe "Hallo2" u.s.w. ... woran liegt das?! X(

18.07.2005 - 10:13 Uhr

Hmmm... entweder habe ich mich unklar ausgedrückt, ihr mich falsch verstanden oder ihr meinen Beitrag nicht ganz gelesen.... also wie ich mit dem dt.select umgehe, dass es die gleichen Sachen nimmt wie Expression etc. ist mir klar... auch wie ich die Werte einer Spalte bekomme... aber ich wollte ja das hier:

Original von schnecke
DataTable dt mit Spalten:

  • Id
  • Name
  • Vorname
  • Ort

Nun möchte ich folgendes machen:

  
int id = 123;   // Hier steht natürlich was 'richtiges' zum Erhalten des ID...  
DataRow[] aktuelleZeile = dt.Select("Name, Vorname, Ort WHERE Id = '" + id + "'");	  
  

... und das geht immer noch nicht. 🙁

13.07.2005 - 11:57 Uhr

Ja, also die Datatable wurde schon befüllt und liegt in einem DataSet.
Daten sind da, werden angezeigt etc.

Nun brauche ich aber einen Weg, über das Select mehrere Spalten auszuwählen, halt nen ganzen DataRow. Und das klappt nicht. Die Beispiele, die ich bisher hatte, waren so wie deins, immer nur auf eine Spalte bezogen. Sowas habe ich auch schon öfters in meinem Programm, geht alles, nur halt jetzt nicht ... und keine Ahnung warum ...

13.07.2005 - 11:23 Uhr

Ich habe eine DataTable, z.B. diese hier:

DataTable dt mit Spalten:

  • Id
  • Name
  • Vorname
  • Ort

Nun möchte ich folgendes machen:


int id = 123;   // Hier steht natürlich was 'richtiges' zum Erhalten des ID...

DataRow[] aktuelleZeile = dt.Select("Name, Vorname, Ort WHERE Id = '" + id + "'");	

Doch ich kriege immer als Fehlermeldung:
"Syntax Error in the Expression" in der Zeile, wo das Select ist... warum geht das nicht?! X(

ps.: das hier hatte ich auch schon:


DataRow[] aktuelleZeile = dt.Select("Name, Vorname, Ort WHERE Id = " + id);	

23.06.2005 - 16:24 Uhr

Naja, in "echt" heißt sie "LieferantenData", aber das ist doch in dem Beispiel wumpe, denke ich... wollte es nur "nachvollziehbarer machen" ... sorry, wenn ich trotzdem verwirrt habe... =)

23.06.2005 - 14:50 Uhr

mmmhhhh... also sorry, wenn ich euch nerve, aber ich kriegs einfach nicht gebacken... auch nicht mit dem Link und den MSDN-Beispielen... es klappt einfach nicht.

Ich habe eine DataTable, die aus einer mysql-Abfrage gefüllt wird. Diese füge ich meinem DataSet hinzu und dann... klappt nix weiter... keine Ahnung... hier einer meiner vielen Code-Versuche (das ist der Letzte):


// dt = DataTable gefüllt mit Daten
// ds = DataSet
ds.Tables.Add(dt);
dataGrid1.SetDataBinding(ds, "Tabellenname");
DataGridTableStyle ts = new DataGridTableStyle();
ts.MappingName = "Tabellenname";
			
DataGridColumnStyle TextCol = new DataGridTextBoxColumn();
TextCol.MappingName = "Hallo";
TextCol.HeaderText = "Hallo";
TextCol.Width = 250;
ts.GridColumnStyles.Add(TextCol);			
dataGrid1.TableStyles.Add(ts);

Ich bekomme nur die Meldung:
"Cannot create a child list for field Tabellenname",
Quelle: System.Windows.Forms.BindingManagerBase EnsureListManager

X(

22.06.2005 - 16:19 Uhr

Also das verstehe ich jetzt nicht mit den TableStyles.... 🤔

Ich hatte auch das Prob mit dem Spalten ausblenden, da ich auch vorher ein select * from tabelle hatte und ich habe jetzt ganz stumpf einfach meine DataTable, die ich vom dem select bekomme kopiert und dann mit remove() die Spalten, die ich nicht brauche wieder rausgehauen.... aber wie ich lese, geht das ja auch anders... und wohl auch besser 8)
Könntet ihr da vielleicht noch mal n Beispiel posten?

Und noch was anderes: wenn ich im DataGrid ne Zeile anklicke und mir den CurrentRowIndex auslese und diesen Wert verwenden, um an die Daten zu bekommen, so macht "er" das nicht richtig, wahrscheinlich liegt es am Sortieren... wie mache ich es, dass ich an die richtigen Daten komme?!

22.06.2005 - 15:26 Uhr

Meinst du mit "Inhalt" die Tabelle, die in dem Grid hängt?
Und wie willst du es ausdrucken? Einfach in Text-Form die Inhalte oder tatsächlich auch die Optik des Grids? Weil dabei wirst du nicht um die Graphics-Klasse herum kommen.... sehr viel Arbeit, ich hatte es mal versucht, halbwegs hinbekommen, aber das hatte lang gedauert.... aber dieser Link hat mir dabei geholfen: http://www.c-sharpcorner.com/Graphics/DataGridPrinterMG.asp

Ansonsten, wenn es einfach nur die Inhalte sind, brauchst du zwar auch die Graphics-Klasse, aber das ist wesentlich einfacher. Einfacher Rows deiner Table auslesen, zu DrawString machen und drucken über die Printing-Klassen.

Grenz' dein Prob nochmal genauer ein, dann kann man dir vielleicht auch mit CodeSchnipsseln oder so helfen 😉

21.06.2005 - 10:40 Uhr

Hi und sorry für den Titel... mir fiel nix passenderes ein.

Also ich möchte folgendes haben:

  • ein DataGrid, indem
  • eine DataTable ist als Source
  • und eine Spalte mit ner Checkbox drin, die ganz vorne als erste Spalte sein soll.

Und so weit bin ich:
Habe ein DataGrid und eine DataTable. Die Daten für die DataTable kommen aus ner DB über


DataTable data = new DataTable("name");		
MySqlDataAdapter da = new MySqlDataAdapter(sql, myCon);
MySqlCommandBuilder cb = new MySqlCommandBuilder(da);
da.Fill(data);	

Und dann habe ich noch das hier:


DataGridTableStyle tabStyle = new DataGridTableStyle();
DataGridBoolColumn boolCol = new DataGridBoolColumn();
boolCol.HeaderText = "Drucken";
boolCol.MappingName = "Drucken";
boolCol.Width = 50;
tabStyle.GridColumnStyles.AddRange(new DataGridColumnStyle[]{boolCol})tabStyle.MappingName = "name";
			
this.dataGrid1.DataSource = data;
this.dataGrid1.TableStyles.AddRange(new DataGridTableStyle[]{tabStyle});							
DataColumn col = new DataColumn();
col.ColumnName = "Drucken";
col.DataType = System.Type.GetType("System.Boolean");
data.Columns.Add(col);

Ergebnis ist ein DataGrid mit einer Tabelle. Und als letzte Spalte eine Spalte mit Checkboxen. Nun möchte ich diese Spalte gerne nach vorne holen... aber das klappt nicht (wenn ich die letzten 4 Zeilen VOR die Zeile da.fill(data) packe, dann habe ich gar nix mehr ausser meiner DataTable OHNE der Checkbox-Spalte).

Ich weiß auch nicht, ob mein Konstrukt richtig ist...ob es einfacher geht... und überhaupt finde ich das alles sehr verwirrend... 🤔

08.06.2005 - 18:44 Uhr

Bei mir nicht, der Compiler meint er kennt es nicht.
Auch nicht vertippt oder so.

08.06.2005 - 18:43 Uhr

Hi,

wie kann ich in einem Menu CheckBoxen reinmachen? Also so wie in manchen Programmen unter dem Menü "Fenster", da sind dann die aktiven mit Häkchen gesetzt.... das geht doch bestimmt ganz easy?
Der Designer von Vis.Studio bietet mir nur nix an.... muss ich da also in den Code rein... aber wie und wo und vor allem WAS....?! 🤔

08.06.2005 - 12:28 Uhr

Halt, eine Frage habe ich noch, habe das hier:


DataRow[] results = dt.Select("Startdatum LIKE '" + dateVariable + "'");

Warum gibt es dann weder results.Count noch results.Length?!
Hat das einen besonderen Sinn... oder wieso?

08.06.2005 - 12:22 Uhr

Ich erwähnte, dass ich ein Brett vorm Kopf habe, oder?! 😁 8)

(oh man, ich hasse es, wenn die einfachen Dinge nicht ersichtlich sind.... =))

Danke dir, Noodles, für die "Erleuchtung" 🙂

08.06.2005 - 11:47 Uhr

Kannst du nicht vorher ein Select machen für deinen Reader, der dann halt nur die Daten holt, die du möchtest? Ich verwende nicht den OleDB Adapter, aber in MySQL gibt es das hier:


string sql = "SELECT feldname FROM tabelle where ID < 500000;";
MySqlCommand cmd = new MySqlCommand(sql, myCon);
reader = cmd.ExecuteReader();    							
while(reader.Read()) 
{							string was_auch_immer = (string)reader["feldname"];
}
reader.Close();

Sicherlich wird es das auch äquivalent bei OleDB geben?! 🙂

08.06.2005 - 11:39 Uhr

Hallo Community,

ich habe glaube ich gerade ein Brett vorm Kopf... aber bevor ich erzähle was und wie mal ein bissl Code, vielleicht erklärt es sich dann von selbst:


datatable.DefaultView.RowFilter = "Startdatum LIKE '" + dateVariable + "'";
for(int i = 0; i < datatable.DefaultView.Count; i++)
{	
	DataRow row = datatable.Rows[i];  // HIER !!! (*siehe unten)
                ...
}

Da, wo "HIER!" steht möchte ich nur die Rows haben, die meinem RowFilter von vorher entsprechen. Mit meinem jetzigen Konstrukt würde er mir ja die Rows von 0 beginnend bis DefaultView.Count zurückgeben. Er soll aber nicht bei 0 anfangen sondern ebend beim ersten Row, der meiner Filterung entspricht....

... und das kriege ich grade irgendwie nicht auf die Reihe... denn sowas gibt es ja nicht:


DataRow row = datatable.DefaultView.Rows[i];

aber sowas möchte ich gerne 😉

02.06.2005 - 16:14 Uhr

SQL ist ja nicht das Problem; meine Frage war ja nur, ob ich der Select-Funktion von DataTable einen "normalen" SQL-String übergeben kann und ob er damit quasi "klar kommt". 😉

02.06.2005 - 14:53 Uhr

Es ist eine reine Windowsanwendung und habe nur mysql 4.x 🙁

Wenn mir jemand zu dem DataTable - Select mal n Beispiel geben könnte (die in der MSDN sind zu einfach), wo ein größeres Select gemacht wird... sowas wie "select blabla where blabla like "" ... das wäre toll.... 🙂
(oder mir zumindest sagen kann, ob ich die Funktion wie in SQL ansprechen kann)

Dankeschön 🙂

02.06.2005 - 14:26 Uhr

Ich habe auch schon gelesen, dass es für DataTable eine "select" Methode z.B. gibt.... ist die so wie ein "sql'isches" select? Weil der Methode kann man einem String übergeben, nur ich weiß nicht wie der string aufgebaut ist.... und wie schnell sowas geht?
Denn eine DataTable habe ich ohnehin schon in meinem Programm.

StoredProcedures in MySQL habe ich noch keine Erfahrungen mit, aber ich werde mal danach googlen, danke für den Tipp.

02.06.2005 - 14:06 Uhr

Hallo,

ich arbeite mit einer Datenbank und die hat knapp 100.000 Datensätze mit denen ich Statistik-Berechnungen durchführe. Nun ist meine Frage, was geht schneller:

  1. bei jeder Berechnung ein passendes SQL zusammen zu bauen, hinzuschicken und Ergebnis zu holen und das anzeigen lassen etc. ODER

  2. beim Starten des Programms alle 100.000 Datensätze holen und in einer ArrayList o.ä. speichern und dann damit weiterarbeiten ODER

  3. beim Starten des Programms die Daten, die für die erste Anzeige gebraucht werden holen und den Rest per SQL nachladen ODER

  4. ganz was anderes, an das ich jetzt nicht denke....

Momentan mache ich die 3. Methode, aber irgendwie ist das Programm trotzdem recht langsam. Es handelt sich um eine MySQL DB und ich nutze den MySQL Data .NET Treiber.

Für Antworten dankbar und grüssend,
die Schnecke 🙂

17.05.2005 - 09:19 Uhr

Hi,

hat hier jemand schon mal Erfahrungen mit Chart FX gemacht... und wenn ja.... mit dem Drucken eines Charts (also das Diagramm selber)? Da das Ganze ja eine 2D-Graphic ist, müsste es ja nicht zu schwer sein, davon ein Graphics-Abbbild zu machen, dass ausgedruckt werden kann, oder?!
Aber bevor ich mich daran mache, wollte ich mal horchen, ob das schon mal jemand gemacht hat und mir dann event. mal ein Beispiel oder Codeschnippsel zeigen kann (man muss ja nicht jedes Mal das Rad neu erfinden).

Vielen Dank schon mal und einen schönen Wochenstart,
schnecke

17.05.2005 - 08:17 Uhr

Du hast schon eine Textur auf allen Seiten, nur sind einige Seiten verzogen. Kann es sein, dass das Objekt eine Cinema 4D Datei ist? Wenn ja, dann musst du dort eine Einstellung für die Textur verändern....

17.05.2005 - 08:15 Uhr

In dem du einfach immer deine Kameraeinstellungen veränderst, wo die X-, Y- und Z-Achse verlaufen dürfte die bekannt sein und das es eine Kameramatrix gibt, auch. Also einfach mal ausprobieren und drauflos skalieren etc. 👍

13.05.2005 - 10:04 Uhr

Hi,
ich habe deinen Code mal ein klein wenig umgebaut, so läuft er zumindest (jedenfalls bei mir) 😁 :


using System.Drawing;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;

namespace Schrift
{
	
	public class Schrift : System.Windows.Forms.Form
	{
        private Device device = null;        					
        private Microsoft.DirectX.Direct3D.Font font = null;        

		public Schrift()
		{			
			InitializeComponent();
            this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true);
		}

        
        public void InitializeGraphics()
        {            
            PresentParameters presentParams = new PresentParameters();
            presentParams.Windowed = true;
            presentParams.SwapEffect = SwapEffect.Discard;
            presentParams.AutoDepthStencilFormat = DepthFormat.D16;
            presentParams.EnableAutoDepthStencil = true;
            device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);                      
            font = new Microsoft.DirectX.Direct3D.Font( device, new System.Drawing.Font ("Arial", 14.0f, FontStyle.Regular) );           		
        }		           

        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Blue, 1.0f, 0);
            device.BeginScene();
            font.DrawText(null, string.Format("Hallo"), new Rectangle(10,10,0,0), DrawTextFormat.NoClip, Color.White);
			device.EndScene();
            device.Present();
            this.Invalidate();
		}		

		#region Windows Form Designer generated code		
		private void InitializeComponent()
		{						
            this.Size = new System.Drawing.Size(300,300);
            this.Text = "schrift";	
		}
		#endregion

		
        static void Main() 
        {
            using (Schrift s = new Schrift())
            {               
                s.Show();
                s.InitializeGraphics();
                Application.Run(s);
            }
        }                                          
       
	}
}


12.05.2005 - 16:17 Uhr

Original von hauptmann
also ich programmiere seit ich 11 bin also rund 4/5 Jahre -.-

Also dafür ja mal meinen Respekt! Als ich 11 war habe ich Autos, Lego und Co. gespielt. Computer kannte ich nur vom hören/sagen. Wirklich cool, wenn du damals schon so was konntest, da ja programmieren auch viel Logik und Mathematik mit sich bringt. Und habe dein DirectX-Tut. gelesen und jetzt stelle ich fest dass du erst (nicht böse gemeint 😉 ) 16 bist... Wahnsinn. Dafür hast du echt meinen vollen Respekt!

Zum Thema zurück: ich programmiere seit Studiumsbeginn, also ca. 2 Jahre. Sprachen: Java, C, C# und Skriptsprachen wie PHP, Perl & Co.

12.05.2005 - 16:10 Uhr

Du kannst eine Direct3D-Schrift machen und diese in deiner OnPaint() (oder Render() ) Methode aufrufen:


private Microsoft.DirectX.Direct3D.Font font = null; 

...

// in InitalizeGraphics():
font = new Microsoft.DirectX.Direct3D.Font( device, new System.Drawing.Font ("Arial", 10.0f, FontStyle.Regular) );

...

// in Render:
font.DrawText(....)

...


Und dadurch, dass deine Schrift quasi permanent neu gezeichnet wird, kannst du sie auch laufend verändern (z.B. über eine Schleife die Position verändern, auflösen etc.). Die Änderungen sind fliessend, da der Bildschirm seeehr oft neu gezeichnet wird... g (es sei denn, der PC ist lahm) 😉

12.05.2005 - 16:02 Uhr

Oh danke für diese Antwort.
Das freut mich ja jetzt 8)

(hätte gedacht, dass das nicht so einfach geht... also dass er auch die Tage aufsummiert wenn Hours > 24 ist)

12.05.2005 - 15:59 Uhr

Woher kommt denn deine Variable "einWert" ... ? Kann sie in deinem Code nicht finden.
Und bei einer ArrayList reicht auch aus meineList.Add(item), das this. kannst du weglassen.

12.05.2005 - 15:56 Uhr

Original von Noodles
Denn ein Tag hat 24 Stunden und nicht 99. 😉
Teste es doch einfach aus, dann siehst Du was passiert.

Emmm.... ja.... er hat nur 24h .... g

Ich habe mal ein wenig getestet.... habe zu einer bestehenden TimeSpan einfach weitere TimeSpans hinzu addiert, also quasi Einzel-Zeiten zu einer Gesamtzeit. Nun habe ich in meiner Ausgabe z.B. den Wert:

1.05:30:40

.... heißt das jetzt:

  • 1 Tag
  • 5 Stunden
  • 30 Minuten
  • 40 Sekunden

... oder woher kommt die "1." ?! Nachrechnen, ob das stimmt möchte ich nicht wirklich, weil dann müsste ich 252 Werte per Hand aufsummieren.... X(

12.05.2005 - 15:20 Uhr

Ich habe auch noch ein Problem: ich möchte auch die Dauer berechnen. Klappt alles so weit, nur dass ich halt auch als Ergebnis der Berechnung ein TimeSpan bekomme. So kriege ich z.B. folgendes:

  1. wert: 12:00:00
  2. wert: 12:30:00
    dauer = wert2 - wert1
    dauer = 00:30:00

... so weit ja schon mal gut. Nur was wäre wenn ich jetzt mehrere Zeiten zu einer Gesamtdauer zusammenrechnen würde, also in einer Schleife gesamtdauer += dauer. Und wenn Gesamtdauer dann größer wäre als der Wert 99:99:99 ... was passiert dann? Macht er automatisch einen Tag dazu.... oder wie?????

11.05.2005 - 12:37 Uhr

Original von BruderKotlett
Hmm... das scheint es wohl zu sein

Oh ja, sorry, mein Fehler... habe mal wieder zu wenig gelesen bzw. geschrieben 😭

Graphics erzeugst du ja nicht direkt, du rufst Methoden aus Graphics auf und "malst" damit. Du musst dafür auf jeden Fall die OnPaint() Methode überschreiben, z.B. so:


protected override void OnPaint(PaintEventArgs e) 
{
	// sowas noch: Pen myPen = new Pen(...)
	e.Graphics.DrawRectangle(myPen, 10.0f, 10.0f, 10.0f, 10.0f);
	  					
} 

Und in deinem Falle musst du halt in OnPaint deinen String zeichnen. Versuch mal sowas bei dir:


// in OnPaint():
    e.Graphics.MeasureString(curPK, new Font("Verdana", 7.0F));                    

Und oben die private Var. "g" rausnehmen, die brauchst du nicht.
Sollte... hoffentlich... so klappen 🙂

*Daumen drück*

(ich hoffe, ich habe jetzt nix vergessen, bin grade unter Zeitdruck, da es jetzt zum Essen geht!)

11.05.2005 - 10:53 Uhr

Baue es mal so um:


                public class dbDatabaseParser
{
          ....
          ....
		private Graphics g;
		private SizeF measureSize;

		public dbDatabaseParser()
		{
         this.measureSize = new SizeF(10.0f, 10.0f);
		}

		public dbDatabase doParse(string connection)
		{

				for(int p = 0; p < pKeys.Rows.Count; p++)
				{					
					string curPK = pKeys.Rows[p]["Column_Name"].ToString();
					measureSize = g.MeasureString(curPK, new Font("Verdana", 7.0F));					

					pks = pks+"\n"+pKeys.Rows[p]["Column_Name"].ToString();

					if(measureSize.Width > width)
						width = measureSize.Width;
					else
						width = width;

				}
				newTable.PrimaryKeys = pks;

               ........
               ........
		}
}

[edit] Irgendwie kann man Code-Zeilen nur sehr schlecht formatieren... ??!

11.05.2005 - 10:50 Uhr

Original von BruderKotlett
"Objektverweis wurde nicht auf eine Objektinstanz festgelegt".

... weil du nirgends MeasureString erzeugst (mit new SizeF() ).
Und du solltest Klassenattribute nicht unbedingt Public machen, lieber private und über Get/Set oder den schönen Properties zugreifen.

11.05.2005 - 10:08 Uhr

So schnell ne Antwort - und klappt wunderbar. Vielen Dank dafür!

(hätte gar nicht gedacht, dass das so einfach geht....) 👍

11.05.2005 - 09:35 Uhr

Guten Morgen,

gibt es einen Weg, eine ComboBox mit DropDownList als Style (also ReadOnly) wieder auf quasi unselektiert zu setzen? Also wenn man das Programm startet und die ComboBox nicht anklickt, ist die ja so weiß, quasi leer. Und wenn ich was auswähle, "rastet" die Auswahl ja ein. Nun möchte ich aber durch den Klick auf einen Button wieder den Ausgangszustand, als wenn man nichts geklickt hätte, herstellen.
Hintergrund ist, dass ich einen Filter habe, bei dem man über mehrere ComboBoxen eine Anzeige in einem Datagrid verändern kann. Und dann soll es da noch einen Knop geben alà "Filter raus" der alle Boxen auf unselektiert setzt... verstanden...?! 🤔

Habe einfach mal das hier gemacht:


meineComboBox.Text = "";

aber das war wohl zu naiv gedacht.... geht zumindest nicht...

Vielleicht habt ihr ja ne Idee. =)

06.05.2005 - 21:47 Uhr

Ja, das Buch kann ich dir auch nur schwer empfehlen 🙂
Sehr gut! 👍

06.05.2005 - 21:45 Uhr

Oooohhhhh.... ich Dummerchen.... 👅 schäm
Mal wieder eine "es-ist-schon-viel-zu-spät" - Aktion...

Aber anscheinend bist du wacher, herbivore 😁
Vielen Dank... ich habe hier schon bald 2h lang rumprobiert und bin aus lauter Verzweifelung schon zu RegEx gesprungen... da hast du bei mir aber ein Licht angeknipst! Daaankköööö! =)

06.05.2005 - 21:30 Uhr

Hi Forumsleser....!

ich trete hier mal wieder auf der Stelle... und zwar lese ich mehrere Strings aus einer Textdatei und braucht immer nur eine Zeile. Die ist so aufgebaut:


    abcd    123         hgf45    234

Zwischen den einzelnen Werten sind Leerzeichen, keine Tabs oder so. Und der Abstand zwischen den Zeichen ist nicht immer gleich, mal sind es 5 Leerzeichen, mal 4, manchmal auch 10. Unterscheidet sich immer von Zeile zu Zeile. Nun möchte ich gerne jeden Wert einzeln in einer Variable haben, da die Anzahl der Werte immer gleich ist. Ich brauche also sowas in der Art:


string[] s; // Ergebnisarray
s[0]  // hier: abcd
s[1]  // hier: 123
s[2]  // hier: hgf45
s[3]  // hier 234

Nun habe ich gedacht, mache ich es so:


string[] s = zeile.Split(new char[] {' '} );

for(int i = 0; i < s.Length; i++)
{
	if( !s[i].Equals(" ") )
                {
                       // Müsste jetzt ja ein Wert sein
                }
}

Nur er geht bei jedem Wert in die if-Abfrage... auch wenn dort nur " " drin ist.... aber das soll er ja gerade nicht.... dafür habe ich ja auf != "" geprüft.... was mache ich falsch???? 🤔

03.05.2005 - 09:50 Uhr

Original von seth
ich hoff der hinweis hilft dir ...

Und wie!!!! 🙂
Vielen Dank dafür! .NET Connector läuft bei mir auch super.

Noch dazu gibt es da die Klasse "MySqlDateTime", womit ich jetzt keine Probleme mehr habe mit Werte wie "0000-00-00" in meiner Datenbank. ByteFX konnte diese nämlich nicht auslesen ohne eine Exception zu werfen.

Ach mann bin ich happy! Noch mal vielen Dank! 👍

29.04.2005 - 14:26 Uhr

Ich habe meine Anwendung mal auf einem anderen System ausprobiert, da funktioniert es einwandfrei. ByteFX ist die gleiche Version, allerdings habe ich auf dem System hier eine neuere MySQL-Version.
Auf dem System, wo die Anwendung aber laufen soll, ist ein Produktivsystem und ich kann MySQL nicht updaten (habe weder Zugang dazu, noch soll da o-ton admin: "nichts dran gerüttelt werden" ) ... was kann ich also noch machen? Ideen? 🤔

29.04.2005 - 13:53 Uhr

Original von Basster
versuchs doch sonst erstmal mit:

  
string s = Convert.ToString(reader[0]);  
  

ist vielleicht nicht so innovativ... aber... versuchs doch mal...

Habe ich (leider) auch schon probiert.... 🙁
Aber trotzdem danke. =)

Original von svenson
Bug in MySQL:


>

Hmm... und was kann ich da jetzt machen? Das MUSS gehen... ich brauche das für eine Anwendung... und ne andere Lösung habe ich nicht um meine Daten aus der MySQL-DB zu bekommen... oder gibts da noch was??? X(

29.04.2005 - 11:22 Uhr

Hallo,

vielleicht kann mir hier ja jemand helfen, ich drehe bald durch.... 🙁
Habe eine MySQL DB, von der ich mir einige (= ca. 30.000) Datensätze hole. Nutze dafür ByteFX. Bisher hat ByteFX bei mir für MySQL immer wunderbar geklappt, doch dieses Mal geht gar nichts. Hier der COde zum Ausführen des Statements:


public ArrayList SQL(string sql)
{			
	ArrayList resultSet = new ArrayList();
			
	try
	{						 IDbCommand dbcmd = myCon.CreateCommand();       	     		
		dbcmd.CommandText = sql; 
		IDataReader reader = dbcmd.ExecuteReader();
		while(reader.Read()) 
		{										
			string s = (string)reader["spalte1"];    // Hier kommt der Fehler!
			resultSet.Add(s);
		}
		       
		reader.Close();
		reader = null;
		dbcmd.Dispose();
		dbcmd = null;			    
	}
	catch(Exception e)
	{
		MessageBox.Show("Fehler beim Ausführen des SQL-Statements. Fehlermeldung: ." + e, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
	}
	return resultSet;
}				

Die Fehlermeldung tritt nach ca. 120 Datensätzen auf, die erfolgreich gelesen werden konnten (meine ResultSet-Liste hat ca. 120 Einträge). Doch dann kommt immer folgende Fehlermeldung:

"Unknown transmission status: sequence out of order."

die ich mir nicht erklären kann? Das Programm stürzt dabei nicht ab, aber ich kriege natürlich auch nicht alle meine Daten, die ich haben möchte. Mein SQL-Statement ist ein einfach "SELECT spalte1 from meineTabelle" und mehr nicht.

Also wenn jemand ne Idee hat, wäre ich ihm seeeeehr dankbar!!! Probiere nämlich schon seit 2 Tagen dran rum.... X(