Laden...
Avatar #avatar-2329.gif
xxxprod myCSharp.de - Experte
Programmierer Österreich\Wien Dabei seit 13.04.2006 1.378 Beiträge
Benutzerbeschreibung

Forenbeiträge von xxxprod Ingesamt 1.378 Beiträge

16.03.2009 - 16:05 Uhr

Meine Variante:

(?≤\bID(?:\s|:\s?|\s-\s))\d{7}\b

Lg XXX

11.03.2009 - 09:56 Uhr

Ist vielleicht nicht die sauberste Lösung aber eine andere ist mir ebenfalls nicht bekannt:

USE X3
GO

SELECT a.* INTO #tmp
FROM OPENROWSET('SQLNCLI', 'Server=(local);Trusted_Connection=yes',
     'exec <dbName>.<schema>.<spName> <params,...>') AS a;

USE TempDb
EXEC sp_help #tmp

DROP TABLE #tmp

Lg und viel Spaß damit,

XXX

06.03.2009 - 15:29 Uhr

Einfach ein Leerzeichen zu den erlaubten Charactern einfügen:

^[a-zA-Z ]*$

/w

oder war es backslash?

\w ist "word", du meinst wohl \s welches für whitespaces aller Art steht und dann aber auch Tabs sowie Zeilenumbrüche matcht also mehr als verlangt.

Lg XXX

04.03.2009 - 09:37 Uhr

Weiß nicht, ob es ohne dem möglich ist aber hier findest du vielleicht ein paar Methoden, die dir den Zugriff darauf erleichtern:

[ExtensionMethods] Reflection

Lg XXX

03.03.2009 - 09:14 Uhr

Ich habe zwar Essential Windows Presentation Foundation aber noch nicht so viel damit gemacht und hab auch noch kein anderes gesehen um vergleiche machen zu können bzw. um es bewerten zu können. Von dem bisschen was ich daraus gesehen hab gefällt es mir. 😃

Lg XXX

12.02.2009 - 15:05 Uhr

Ich glaub was er meint ist, das das Event das er abonnieren will, keinen sender liefert und er aber trotzdem auf das Event-feuernde Objekt zugreifen will.

Hier nochmal mein Beispiel an deinem Beispiel demonstriert:


myclass.onevent+= (andereKlasse k)=> myclass_onevent(myclass, k);

myclass_onevent(MyClass myclass, andereKlasse k)
{

}

Lg XXX

12.02.2009 - 14:32 Uhr

CREATE PROCEDURE pr_filterList
  @filter varchar(150)
AS
BEGIN
  DECLARE @sql NVARCHAR(MAX)
  SELECT @sql='SELECT FeldA, FeldB FROM TabelleXY WHERE FeldC IN('+@filter+')'
  EXEC (@sql)
END

Hierbei musst du aber aufpassen, dass du strings auch unter Hochkommas setzt:


EXEC pr_filterList
  @filter = '''Expr1''. ''Expr2''' 

Lg XXX

12.02.2009 - 11:19 Uhr

Hier ein kleines Beispiel dazu, wenn ich das Problem richtig verstanden habe.


{
	public class Program
	{
		static void Main(string[] args)
		{
			List<MyClass> classes = new List<MyClass>();
			for (int i = 0; i < 10; i++)
			{
				MyClass c = new MyClass { Nr = i };
				c.MyEvent += () => MyClassEvent(c);
				classes.Add(c);
			}

			foreach (var c in classes)
			{
				Console.WriteLine("Raising MyClassEvent Nr:{0}", c.Nr);
				c.RaiseEvent();
			}
		}
		static void MyClassEvent(MyClass myClass)
		{
			Console.WriteLine("MyClassEvent Nr:{0} fired", myClass.Nr);
		}
	}

	public delegate void MyEventHandler();
	public class MyClass
	{
		public int Nr { get; set; }

		public event MyEventHandler MyEvent;

		public void RaiseEvent()
		{
			if (MyEvent != null)
				MyEvent();
		}
	}

Lg XXX

09.02.2009 - 13:09 Uhr

Er hat ein Paging für das DataGridView implementiert. Jetzt wird am DataGridView nach einer Spalte sortiert(mittels Headerclick) und beim Aufruf einer weiteren Page soll dieselbe Sortierung angewendet werden und nicht die Sortierung durch Neuzuweisung der neuen Daten(Page) verloren gehen.

Die aktuelle Sortierung kannst du mittels SortColumn und SortOrder aus dem DataGridView auslesen und mit Sort() kannst du nach neubefüllen des DataGridViews wieder nach der vorigen Spalte sortieren.

Lg XXX

09.02.2009 - 11:25 Uhr

Falls doppelte Rows im Select auftauchen sollten, kannst du diese entweder mit GROUP BY oder DISTINCT rausfiltern.

Und ansonsten ist vielleicht auch der MERGE Befehl für dich interessant.

Lg XXX

23.01.2009 - 14:11 Uhr

Das kann auch mit dem DropDownStyle der ComboBox zu tun haben. Wenn nämlich nur DropDownList ausgewählt ist, kann man nur Elemente anzeigen, die auch in der Liste vorhanden sind - also kein eigener Text.

Lg XXX

16.01.2009 - 13:33 Uhr

Text.Insert ist keine saubere Lösung, da dadurch eventuelle Formatierungen der RTB verloren gehen. Probier mal mit der Eigenschaft SelectedRTF oder SelectedText rum. Ich bilde mir ein, dass man mit denen die aktuelle Selektierung überschreiben kann(und wenn nix selektiert ist fügt man quasi ein)

Lg XXX

14.01.2009 - 14:44 Uhr

Bei mir war der Indexdienst immer eingeschaltet und hat trotzdem nur die hälfte gefunden. Es kann außerdem nicht sein, dass windows eine Datei, die nicht indexiert wurde(da das ja im hintergrund passiert) mit der Suche nicht finden kann.(Auch mit eingeschaltener Option, dass auch an nicht indizierten Orten gesucht werden soll).

Bin

07.01.2009 - 11:44 Uhr

Du hast den ParameterNamen unter Hochkommas gesetzt wodurch er nicht ausgewertet wird.

Den Parameter müsstest du aus dem String heraus ziehen:

@p1+'%'

oder so ähnlich.

Lg XXX

05.01.2009 - 14:06 Uhr

Deaktiviere mal das AutoSize bei RowHeadersWidthSizeMode.

Lg XXX

05.01.2009 - 13:46 Uhr

Wird etwas in irgendwelchen DataGridView Events gemacht das vielleicht zeitaufwändig sein könnte?

Lg XXX

05.01.2009 - 08:58 Uhr

Warum löscht du denn das alte DataSet? Wenn du eine neue Abfrage starten willst und die Daten in ein neues DataGridView binden willst, warum erzeugst und retournierst du dann nicht auch ein neues DataSet?

Also eher so:


public DataSet getDataSet(string sqlString, string srcTable)
{
    try
    {
        DataSet ds = new DataSet();
        // send sql string
        OleDbDataAdapter dbAdapter = new OleDbDataAdapter(sqlString, dbConnection);
        // fill dataset
        dbAdapter.Fill(ds, srcTable);
        return ds;
    }
    catch (Exception e)
    {
        MessageBox.Show("Es ist ein Fehler aufgetreten\n\n" + e.Message);
    }
}

Lg XXX

05.01.2009 - 08:20 Uhr

Was ist dsource für ein Objekt? DataSet? Wenn ja dann übergib mal stattdessen die DataTables direkt also dsource.Tables["..."] usw.

Lg XXX

30.12.2008 - 12:03 Uhr

Servus,

wie jede datenbank gibt es "versteckte" tabellen der DB selbst die tabellen namen und zeugs beinhalten... google doch mal nach dem namen der tabelle gibts mit sicherheit was zu finden und lass dir dann über dein script die namen ausgeben. dann weiß du was da los....

allerdings ist das nur eine möglichkeit vllt liegt es auch an etwas anderem

Grüße
Chris

Das wäre so eine Abfrage aber das Thema hat sich ja eh schon erübrigt.

SELECT * FROM sys.tables WHERE Name = 'MyTable'

Lg XXX

29.12.2008 - 14:54 Uhr

So wie ich das verstanden habe, willst du einen musterstring übergeben zb "01.01.2009" und rauskommen soll sowas wie @"\d\d.\d\d.\d\d\d\d"

Wenn dem so ist - nein gibt es nicht. Wär aber sicher interessant sowas zu bauen. 😃

Lg XXX

19.12.2008 - 12:22 Uhr

[EDIT=herbivore]Abgeteilt von Diskussion zu "Forumsgeschichte"

Bezug Forumsprogramm[/EDIT]

Mir ist gerade eine Idee gekommen aber weiß nicht ob sie umsetzbar ist. Wäre es nicht angebrachter einen Thread zu starten ähnlich dem der Forumsgeschichte nur das anstatt von irgendeiner Geschichte ein Programm entwickelt wird. Jeder darf bei einem Post nur ein Wort bzw. Zeichen hinzufügen. Natürlich dürfen nur syntaktisch richtige Wörter, Zeichen gepostet werden.

Lg XXX

11.12.2008 - 13:30 Uhr

Ich habs jetzt auf die schnelle nicht geschafft dein Problem nachzustellen: Bei meinem Beispiel wird Leave nie aufgerufen, wenn ich das formular mit x oder Alt-F4 schließe.

Lg XXX

11.12.2008 - 10:39 Uhr

Hallo gordon2001,

Meine Frage also wie kann ich die Ausführung von Code im Designer verhindern!?
das war deine Frage und meine Antwort beantwortet genau das.

herbivore

Leider funktioniert das nicht innerhalb des Konstruktors eines Controls. Ein Konstruktor sollte auch keine Fehler verursachen - lagere daher diesen kritischen Code lieber in ein Event aus(zB Load) wo du dann auch mit DesignMode prüfen kannst ob der Code vom Designer aufgerufen wurde oder nicht.

Lg XXX

05.12.2008 - 08:58 Uhr

Ja geht mit ExpressionTrees ist aber eher ein komplexes Thema.

Lg XXX

04.12.2008 - 16:46 Uhr

Neuer Versuch:

(\d*[^\d]*)$

Lg XXX

04.12.2008 - 16:41 Uhr
(((\d+[^\d]*)|\w+)\s*)$

Lg XXX

02.12.2008 - 16:46 Uhr

Hallo SirSydom,

ein Container-Objekt könnte als Eigenschaft dein Objekt halten. Wenn du dieses Objekt später ändern willst, brauchst du nur die Eigenschaft des Container-Objektes überschreiben. Natürlich müsstest du dann in diesem Fall überall das Container-Objekt referenzieren und nicht direkt das Objekt.

Klar ausgedrückt? 😃

Lg XXX

02.12.2008 - 12:01 Uhr

der indexer beim reader gibt die spalte des selects an: reader[0] <- erste Spalte, reader[1] <- zweite Spalte, usw...

Lg XXX

02.12.2008 - 08:59 Uhr

Das selbe Problem wie gestern - du entfernst die leerzeichen aus dem Pattern wodurch es nicht mehr richtig ist.

So sollte dein zusammengebauter String aussehen:(ungetestet)


protected const string SearchPattern =
            @"([0-99]{2}\/[0-99]{2}\/[0-9999]{4}) " +
            @"([0-99]{2}\:[0-99]{2}\:[0-99]{2}\.[0-99]{2}) " +
            @"([0-99]{2}\:[0-99]{2}\:[0-99]{2}\.[0-99]{2}) " +
            @"([A-Z]) " +
            @"([0-99]{4}_[0-99]{16}) " +
            @"([A-Z][0-9]) " +
            @"([0-9]+) " +
            @"([0-9]+)"

Lg XXX

01.12.2008 - 16:25 Uhr

Abgesehen davon, dass dir ein paar Abstände gefehlt haben, passts soweit:

([0-99]{2}\/[0-99]{2}\/[0-9999]{4}) ([0-99]{2}\:[0-99]{2}\:[0-99]{2}\.[0-99]{2}) ([0-99]{2}\:[0-99]{2}\:[0-99]{2}\.[0-99]{2}) ([A-Z]) ([0-99]{4}_[0-99]{16}) ([A-Z][0-9]) ([0-9]+) ([0-9]+)

Lg XXX

01.12.2008 - 16:06 Uhr

Also [0-9]+ liefert mir bei "3 90" im ersten Match 3 und im zweiten 90. Was stimmt daran also nicht?

Das * ist hier unpassend, da dadurch auch das Leerzeichen matcht.

Lg XXX

01.12.2008 - 15:16 Uhr
 byte b = -5;
//b ist 251
int i = b - 256;
//i sollte wieder -5 sein

Lg XXX

27.11.2008 - 13:59 Uhr

Warum nicht SCOPE_IDENTITY() verwenden?

Lg XXX

25.11.2008 - 14:34 Uhr

Sollt prinzipiell möglich sein, wenn du die Zellen selbst zeichnest. Also oncellpaint oder so überschreiben und dort den Inhalt außer dem Hintergrund zeichnen.

Lg XXX

//EDIT: Natürlich müsste auch das DataGridView OnPaint oder OnPaintBackground überschrieben werden um dort dann dein Image reinzumalen.

25.11.2008 - 11:38 Uhr

So vielleicht?^^


String binaryString = Convert.ToString(value, 2);
bool result = binaryString.IndexOf('1') == binaryString.LastIndexOf('1');

Lg XXX

20.11.2008 - 12:21 Uhr

Hallo Froggie,

mach dir doch eine statische Klasse mit folgender methodes
...

Um eine Variation erweitert und mit LINQ Ausdrücken:


        public static bool ValueEquals(object value, params object[] comparsion) {
            return comparsion.All(o=> value.Equals(o));
        }
        public static bool ValueEqualsAny(object value, params object[] comparsion) {
            return comparsion.Any(o=> value.Equals(o));
        }

Lg XXX

20.11.2008 - 12:14 Uhr

Was ist dein Listener, was tut er, worauf "horcht" er, wie funktioniert er/sollte er funktionieren? Was tust du in deiner WriteMyLine Methode?

Lg XXX

20.11.2008 - 10:56 Uhr

Neues Array anlegen und die Werte aus dem alten ins neue kopieren.

Lg XXX

19.11.2008 - 10:24 Uhr

Hmm leider werd ich daraus auch nicht ganz schlau.

Lg XXX

19.11.2008 - 09:45 Uhr

Weis nicht ob ich mit dem Hinweis richtig bin, aber Du wirst wahrscheinlich nach Interpret suchen ohne den ganzen interpret einzugeben, dann wirst Du mit "Wildcards" die Interpreten suchen müssen.
Das geht am leichtesten mit string.IndexOf() oder ähnlichen, am schnellsten bist Du aber mit
>

DataTables unterstützen auch Wildcards. 😜

Lg XXX

19.11.2008 - 09:37 Uhr

Was ist der Typ des Objektes mit dem du arbeitest? Was sind die Elemente der Collection für Typen? Schau dir mal das Objekt beim Debuggen an(Mouseover) - sind da Elemente drinnen und wenn ja, wie ist die Collection aufgebaut?

Lg XXX

19.11.2008 - 09:11 Uhr

Schon mal die Select Methode vom DataTable ausprobiert? Da kannst wie beim SQL Bedingungen angeben und du bekommst nur die betroffenen Rows zurück. Ist vermutlich schneller als jede Row händisch zu vergleichen.

Über eigene Objekte würde ich nicht suchen. Ich denke das kann das DataTable besser bzw eine Abfrage auf eine DB würde bei großen Datenmengen vermutlich noch schneller sein.

Lg XXX

18.11.2008 - 11:40 Uhr
17.11.2008 - 15:21 Uhr

Hab die Abfrage leicht angepasst und einen Fehler ausgebessert(AS für den Aliasnamen vergessen). So sollte es dann funktionieren:


SELECT *
FROM
(
	SELECT *, ROW_NUMBER(PARTITIONBY <IdentifizierendesFeld> ORDER BY <AutoIncrementellemFeld> DESC) AS RowNumber
	FROM Tabelle
)tmp
WHERE RowNumber=1

Lg XXX

17.11.2008 - 14:22 Uhr

@xxxprod
da hast du immernoch das problem, das du auch einträge bekommst, die dort nicht hereingehören. sprich überschreibene einträge.

Sehe ich jetzt nicht so... wenn die Gruppierungsfelder richtig gewählt sind sollte die Abfrage funktionieren. Sofern die erste Spalte eine Autoinkrementelle id-spalte ist(was ich annehme).

Vielleicht kannst du ein Beispiel posten, wie du dir vorstellst das die Abfrage scheitern könnte?

Lg XXX

17.11.2008 - 13:50 Uhr

SELECT *
FROM
(
	SELECT *, ROW_NUMBER(PARTITION BY Name, Email[,.. weitere Gruppierungsfelder] ORDER BY Id DESC) RowNumber
	FROM Tabelle
)tmp
WHERE RowNumber=1

Lg XXX

17.11.2008 - 11:25 Uhr

Nein musst du nicht. Du musst lediglich die bestehende Klasse "wrappen" und um deine neuen Methoden erweitern.

Lg XXX

12.11.2008 - 11:14 Uhr

Hallo cobalt,

du könntest damit anfangen dir ein paar Grundlagen zu SQL durchzulesen.

Lg XXX

12.11.2008 - 10:54 Uhr

Es ist schon möglich nur eine tierische Frikelei.
Siehe dazu auch Steuerelement für colspan.

Lg XXX