Laden...
T
tkrasinger myCSharp.de - Member
Softwareentwickler Enzesfeld (Niederösterreich) Dabei seit 26.03.2008 574 Beiträge
Benutzerbeschreibung

Forenbeiträge von tkrasinger Ingesamt 574 Beiträge

29.05.2008 - 14:01 Uhr

Wollte folgende Methode erstellen, hänge aber leider mit 2 Compiler-Fehlern und weiß nicht, ob ich die hinkrieg, zumal ich auch mit der Typeinschränkung (nur decimal, double, int ...) von T nicht durchkomm. Hat irgendwer eine Idee, oder muss ich tatsächlich, so wie's am Math.Max ist, für jeden Typ eine Methode erstellen?

public static T Max<T>(params T[] values)
{
    T max = default(T);
    foreach (T item in values)
    {
        if (max == default(T))
            max = item;
        if (item > max)
            max = item;
    }
    return max;
}
29.05.2008 - 12:22 Uhr

File.Delete(Server.MapPath("Pfad") + FileUpload1.FileName);

23.05.2008 - 08:46 Uhr
public static Label CreateTextLabel(string text)
{
	Label lbl = new Label();
	lbl.Text = text;
	return lbl;
}
21.05.2008 - 11:12 Uhr

Bulk Insert

21.05.2008 - 08:33 Uhr

lies das ding mal in ein decimal und nicht in ein double ein.

19.05.2008 - 14:06 Uhr

Die Frage is halt da, wie genau du das machst, weil eigentlich könntest du auch schreiben:

string trimmed = SR.ReadToEnd().Replace("\n\r\n\r","\n\r");

das wars dann eigentlich auch schon und da brauchst noch ned mal a schleife ...

19.05.2008 - 13:45 Uhr

Danke, das hab ich schon gesehen, das Problem ist halt nur, dass ich/man das ja jezt eigentlich überall schreiben müsste, damit tatsächlich der "richtige" (codierte) Caller rauskommt und das bei allen Methoden zu machen also GUI/BO/DAO is nicht gerade das was ich als "Lösung" bezeichnen würde.

19.05.2008 - 09:22 Uhr

Ich möchte da nur beifügen, dass ich damit so meine lieben Probleme habe/hatte:

public partial class GUIUser : GUIObject
{
    public List<GUITeam> Teams
    {
        get
        {
            return GUIObject.TransformList<GUITeam, BOTeam>(ContextObject.Teams);
        }
    }
}
public partial class BOUser : BusinessObject
{
    public List<BOTeam> Teams
    {
        get
        {
            return BusinessObject.TransformList<BOTeam, DAOTeam>(ContextObject.Teams);
        }
    }
}
public partial class DAOUser
{
    [SQLProcedureCall("usp_DAOTeam_all")]
    private List<DAOTeam> GetTeams()
    {
        return ExecuteListQuery<DAOTeam>(this, null);
    }
}

Die ExecuteListQuery holt sich eben über die erwähnten StackTrace-Methoden den Aufrufer. Im Debug funktioniert das alles, wenn ich allerdings auf "Release" umstelle, krieg die ExecuteListQuery nicht mehr ganz die richtige Methode raus. Irgendwo rennt da der Optimizer durch und optimiert aufrufe weg, sodass ich aus dem Stacktrace nicht mehr das richtige rauskriege. Optimizer abdrehen ist natürlich blödsinn.
Ich glaub da gibts ein paar Attribute, sodass das nicht passiert, aber die muss ich noch durchprobieren. Daher aufpassen! wenn man diese Sachen verwendet.

15.05.2008 - 07:03 Uhr

das order by wird so wohl nicht reichen, wenn er dann mit
where id = 5 or id = 1 or id = 3 abfragt und dann eben 5,1,3 haben will.

Da wird wohl etwas in der Richtung notwendig sein:
case when id = 5 then 1 else case when id = 1 then 2 else 3 end end

muss mann halt dann ins statement code, sonst seh ich da ned viel chancen, dass nur über SQL hinzukriegen

30.04.2008 - 09:56 Uhr

foreach (System.Type t in Assembly.GetAssembly(typeof(System.Xml.XmlAttribute)).GetTypes())
{
    if (t.IsInterface)
        Console.WriteLine(t.ToString());
}

wobei das im typeof natürlich variabel je nach Namespace etc. ist.

17.04.2008 - 07:01 Uhr

Was genau willst du tun?
Irgendwie versteh ich nur Bahnhof, sorry.

Ich will dass sich der grüne Balken an die Größe seines Containers anpasst, mindestens aber so groß ist wie sein eigener Text. Zweiteres hab ich mit dem Update schon geschafft, nur das Ausbreiten fehlt mir noch.

16.04.2008 - 18:38 Uhr

mal probieren:

row.Displayed = false;
row.Height = 0;

16.04.2008 - 16:17 Uhr

Ich weiß zwar nicht, wo du den LinkButton2 definiert hast und wo der zu sehen ist, aber mach die zuweisungen
LinkButton2.Command += new CommandEventHandler(LinkButton2_Command);
LinkButton2.CommandArgument = outputFileName;
LinkButton2.CommandName = "DL";

nicht im Command vom anderen Button, sondern im Page_Load

Folgendes Problem hast du nämlich im Zusammenhang mit dem ASP.NET Page-Lifecylce

  1. Aufruf: Page_Load
  2. Aufruf: Page_Load -> myLink_Command
  3. Aufruf: Page_Load aber NICHT! myLink_Command, weil ja auch kein click auf myLink

Da du aber erst im myLink_Command den Handler auf den 2. Button hängst, kriegst du den Event beim 3. mal nicht, weil ja kein Handler draufhängt. Also häng den EventHandler immer dran, dann solltest du auch beim 2. Button den Event kriegen.

16.04.2008 - 13:48 Uhr

Hab hier eine kleine Testseite auf der ich ein paar Image-Balken mit Text ausprobiert habe. Leider hab ich keine vernünftige Lösung gefunden, die mit "normalen" HTML und CSS auskommt.

Das Ergebnis im IE (7.0.5730.11) ist ja schon mal was:

aber im Firefox (2.0) gehts gar ned:

Bitte um Hilfe wie sich das (einigermaßen) lösen lässt. (Vor allem würd mich mal interessieren, wie man 3 Bilder - siehe Spalte 1, Zeile 4, ohne Abstand nebeneinander darstellt.)
Wäre allen sehr dankbar, die meine Beispielseite mit hübschen Balken hinkriegen. Danke!

PS: Bitte keine Bemerkungen zu Design etc. das ist nur eine Testseite.

UPDATE

Nur wie krieg ich den markierten Eintrag bis zum Ende der Spalte? .. und das Schriftproblem hab ich auch noch ...

16.04.2008 - 11:51 Uhr

Auch wenn es erledigt ist, noch ein Hinweis: DataTable.ImportRow würde es vermutlich stark vereinfachen. Jürgen

Und noch mehr würde es sich wohl vereinfachen wenn mans einfach nur über ein SQL-Statement machen würde. Schließlich ändert er nur einen Wert und das lässt sich über ein CASE/WHEN bzw. IIF auch lösen also etwa:

INSERT INTO Ziel
SELECT B0M1,Material1,Description1,IIF(Project = ... ;'-';Project)
FROM Quelle

16.04.2008 - 07:02 Uhr

Also mal nur vom Code her, würd ich vorschlagen, die untere foreach schleife zu ersetzen:

DataRow rowl = ds.Tables["Ziel_1"].Rows[ ds.Tables["Ziel_1"].Rows.Count-1];
rowl = ...

Nach einem Durchlauf eine foreach abzubrechen, ist nicht wirklich guter Code, erzeugt außerdem einigen Overhead (Enumerator etc.).

Eigentlich hät ich gedacht, dass die Daten nur im ersten Satz stehen müssten, aber naja ...

11.04.2008 - 18:36 Uhr

verwendetes Datenbanksystem: SQLServer 2005

CREATE FUNCTION [dbo].[fn_GetBeginOfMonth_Int](@value int)
RETURNS DateTime
BEGIN
	RETURN (SELECT convert(datetime,cast((@value*100+1) as char(8)),104))
END 
GO

CREATE TABLE [dbo].[ENTRY](
	[EntryYear] [int] NOT NULL,
	[EntryMonth] [int] NOT NULL,
	[EntryDate]  AS ([dbo].[fn_GetBeginOfMonth_Int]([EntryYear]*(100)+[EntryMonth]))
) ON [PRIMARY]
GO

Wenn ich im TabellenDesigner versuche, die Spalte EntryDate eben als die solche computed anzulegen (siehe TabellenDefinition), meckert der Designer, das irgendwas falsch ist. Leider sagt er mir nur, dass die Formel falsch ist, aber nicht was. Speichern kann ichs trotzdem und natürlich funktioniert die Spalte auch.

Wenn ich in der ComputedDefintion z.b: ([dbo].fn_GetBeginOfMonth_Int) also mit fixem Wert angebe, ist es auch für den Designer Ok, nur sobald ich meine Spalte als Parameter für die Funktion reinschreib, gehts nicht mehr.

Ist das ein Bug im TabellenDesigner oder hat er wirklich einen Grund zu meckern?
Wie gesagt, funktionieren tuts, mich würd nur interessieren, was ihm nicht passt.

28.03.2008 - 11:06 Uhr

leider finde ich wenn ich nach "eigene Beiträge" suche, irgendwie viel zu viel ...

Ich find das "eigene Beiträge" etwas zu unübersichtlich, mir wär es lieber eine Funktion zu haben, die alle Threads listet, in denen ich micht beteiligt habe. Klar das würde über die Suche auch gehen, aber das ist doch mühsam.
In den eigenen Beiträge seh ich tatsächlich alle meine Beiträge, wenn ich in einem Thread 3 mal poste, kommen da 3 Einträge, wär besser ich seh: "Halt, da hab ich was geschrieben, da gibts was neues".

Tobi

28.03.2008 - 10:28 Uhr

Also ich würde die Prüfung trotzdem immer reinschreiben schließlich ist die Wahrscheinlichkeit, dass eine nicht existierende Bruchteile Millisekunden später auf einmal doch existiert sehr sehr gering.
Außerden sind auftretende Exceptions, auch wenn sie "erwartet" wurden, nie gut, weil das ExceptionHandling im .NET doch auch einige Zeit benötigt, deswegen ist es besser beides zu schreiben also:

if( File.Exists(file))  {
   try { 
     Open(); ... 
   } 
   catch(...Exception ) { 
     ... //Exception Handling
   } 
} 
else { 
//not found... 
}
27.03.2008 - 13:06 Uhr

Was bewirkt (Nachname LIKE ISNULL(@Nachname,'%') genau?

Tipp: Schau dir die Hilfe zu IsNull() und die Hilfe zu '%' (Wildcards) an
--> RTFM

26.03.2008 - 16:37 Uhr

Was bei dir falsch bzw. fehlt, ist die richtige Klammersetzung, durch die ORs hebelst du das AND aus ... Besser find ich sowieso die Lösung:

CREATE PROCEDURE usp_Test
	@nachname as varchar(16),
	@ort as varchar(16)
AS
SELECT * FROM (
	SELECT 'Bauer' as Nachname,'Wien' as Ort
	UNION
	SELECT 'Maier' as Nachname,'Graz' as Ort
	UNION
	SELECT 'Bauer' as Nachname,'Graz' as Ort
	UNION
	SELECT 'Maier' as Nachname,'Wien' as Ort
) data
WHERE (Nachname like Isnull(@nachname,'%') AND Ort like IsNull(@ort,'%'))
GO

exec usp_Test 'Bauer','Wien'
exec usp_Test 'Bauer',null
exec usp_Test null,null
exec usp_Test null,'Graz'

-----------------------------------------------------------

Nachname Ort
-------- ----
Bauer    Wien

(1 row(s) affected)

Nachname Ort
-------- ----
Bauer    Graz
Bauer    Wien

(2 row(s) affected)

Nachname Ort
-------- ----
Bauer    Graz
Bauer    Wien
Maier    Graz
Maier    Wien

(4 row(s) affected)

Nachname Ort
-------- ----
Bauer    Graz
Maier    Graz

(2 row(s) affected)



26.03.2008 - 15:36 Uhr

Jetzt mache ich es folgendermassen:

  
int _meinFeld;  
  
public int MeinFeld  
  

Hi, sorry, dass ich einen so alten Thread nochmal raufhol, aber ich schreib grade an den Coding-Richtlinien für die Firma und bin daher fleißig am recherchieren und dabei auf diesen Thread gestoßen.

Mein Problem jetzt zu obigem Beispiel ist, dass ich durch die Einführung von Snippets kaum mehr solche Sachen schreibe, sondern nur mehr generiere. Wie schaff ich es obigen Code über ein Snippet zu generieren? Mein derzeitiges Snippet ist etwa:

private $TypeName$ _$PropertyName;
public $TypeName$ $PropertyName$
{
   get { return _$PropertyName$; }
}

hab da jetzt nur das Problem, dass natürlich auch das Feld immer mit dem Großbuchstaben vom Property anfängt. Hab keine Function in den Snippets gefunden, die das irgendwie könnte ...
Daher hab ich schon öfter gesehen, dass manche auf die m_ oder p_ (o.ä.) Notation umgestiegen sind. Da machts eher weniger wenn man p_FeldName schreibt.

PS: Die MSDN schreibt ja noch nicht mal den _ als prefix vor, also nur über Groß- und Kleinschreibung Property und Feld zu unterscheiden. Wenn ich mich an das halte, kann ich mein Snippet gleich vergessen ....