Laden...
Avatar #avatar-1723.jpg
bayeror myCSharp.de - Member
Fachinformatiker Dabei seit 13.07.2004 21 Beiträge
Benutzerbeschreibung

Forenbeiträge von bayeror Ingesamt 21 Beiträge

07.07.2006 - 17:03 Uhr

thx feadur,

Mit dem Typ-Namen werde ich Probleme kriegen, weil das ja kein eindeutiger Schlüssel des Objekts ist, oder?

Meine Lösung wäre bis jetzt Bis jetzt, bei jedem PostBack mit A alle Bs durchlaufen und als neues _a setzen

07.07.2006 - 14:03 Uhr

Habe die Ehre!

Mal ne hypothetische Frage:
Ich hab ein WebControl A und beliebig viele Objekte B. Von B referenziert ein _a auf A. Und um genau dieses _a geht es, denn wenn ich die _B_s in der Session speichere, wird das _A _hinter dem _B.a (jedes mal) komplett mit in der Session gespeichert. Is zwar klar, aber will ich nicht.

Nachtrag:
Mir geht es darum, dass bei einem PostBack ein neues Objekt des WebControls A erstellt wird und das B._a auf eine alte, unrelevante Version von A zeigt.

Kann man das irgendwie umgehen?
Irgend einen Tipp/Trick?

thx

14.03.2006 - 17:09 Uhr

boco25: Mit CASE kan man afaik nur die Daten an sich verändern, aber nicht aussortieren.

danke vbprogger!
so gehts!
Dass *= solche Probleme macht!?! Der Join an sich wird ja richtig durchgeführt...Komisch.

Weißt du auch wieso sich das Verhalten von *= auch außerhalb des inline views, also im äußeren select fortführt?

14.03.2006 - 14:31 Uhr

Der *= Operator Funktioniert schon, und dass ich einen outer und keinen inner Join verwende ist Absicht. Das von mir gepostete Statement ist sozusagen nur die "halbe Wahrheit". Der Select wäre noch etwas komplexer geworden, da der Select in einem Such-Dialog eingetzt wird z.B. (trans.TRANS_Text like @transText or @transText = null) usw. Aber haben wir jetzt anders gelöst, indem wir die Abfrage in mehrere Selects aufgesplittet haben. Ist performanter.

Aber rein Interessenhalber... ich verstehs trotzdem nicht:


SELECT * from (
    SELECT asst.ASST_Ref a,
           asst.ASST_Type b,
           asst.ASST_TRANS_Desc c,
           asst.ASST_State d,
           trans.TRANS_Ref,
           trans.TRANS_Text e,
           ISNULL(TRANS_Text, 'abcdefg') f
      FROM MM_TRANSLATION   trans,
           MM_ASSET_TYPE    asst
     WHERE 
       trans.TRANS_Text like '%'
       AND trans.LANG_Ref  = 1
       AND asst.COM_Ref    = 1
       AND asst.ASST_TRANS_Desc *= trans.TRANS_Ref
) tbla
where e is not like null

oder auch


SELECT * from(
....
) tbla
where f != 'abcdefg'

bringt mir auch die Datensätze mit TRANS_Text = null zurück. Ein Join auf ein ASSET_TYPE-Feld z.B. ASST_Type funktioniert, aber auf betroffene Felder des outer Joins wird ein Equi-Join ignoriert. Könnte ich verstehen, wenns beim inneren Select Probleme gäbe, aber beim äußeren?? Dem letzteren sollte es doch eigentlich völlig egal sein, was im Inneren genau vorgeht, ob outer Join oder nicht. Er bekommt ein Result Set welches eigentlich einem temporärem Table gleich kommen sollte, mit welchem es übrigens auch funktioniert!

Ich hab mir einige Meinungen von Leuten die sich mit Datenbanken, meist leider nur ORACLE, auskennen eingeholt. Die waren fest der Überzeugung, dass das Statement, so wie gepostet, richtig funktionieren sollte. Da sollte doch kein Unterschied zwischen Microsoft und Oracle sein, ist doch nix spezielles, sondern rein SQL, oder nicht?
Würde mich echt interessieren was da vorgeht. Wenn da wer was weiß, würds mich freuen von ihm zu hören!

14.03.2006 - 11:33 Uhr

Original von svenson
Sollte hier nicht ein INNER JOIN anstelle des Cross Joins verwendet werden?

Sry, mein Sqlisch is nicht das beste... aber ich mach doch hier nen left outer join, oder nicht?

AND asst.ASST_TRANS_Desc *= trans.TRANS_Ref
14.03.2006 - 11:27 Uhr

Original von vbprogger

Original von svenson
Es funzt nicht, weil die Abfrage überhaupt kein Join ist, ich sehe zumindest weit und breit kein JOIN.
doch das ist cross join

@bayeror, sorry wegen not is null, du hast recht.

IMHO darf man Alias nicht in Where verwenden, daher funz das nicht.

... AND trans.TRANS_Text is not null sollte helfen

kein problem 🙂

Alias geht schon in der Where-Klausel. Wenn ich deine Version versuche, komm ich auch zum gleichen Ergebnis...

14.03.2006 - 10:46 Uhr

Danke für die Antwort, aber is not null is schon richtig

14.03.2006 - 10:07 Uhr

Hallo!
Ich möcht gern bei einem Select ein left gejointes feld mit is not null abfragen.
also:


    SELECT asst.ASST_Ref a,
           asst.ASST_Type b,
           asst.ASST_TRANS_Desc c,
           asst.ASST_State d,
           trans.TRANS_Ref,
           [B]trans.TRANS_Text e,[/B]
           ISNULL(TRANS_Text, '?') f
      FROM MM_TRANSLATION   trans,
           MM_ASSET_TYPE    asst
     WHERE 
       trans.TRANS_Text like '%'
       AND trans.LANG_Ref  = 1
       AND asst.COM_Ref    = 1
       [B]AND asst.ASST_TRANS_Desc *= trans.TRANS_Ref[/B]
       [B]AND e is not null[/B]

Ausgabe sieht so aus:


a           b       c           d           TRANS_Ref   e                   f                   
----------- ------- ----------- ----------- ----------- ------------------- --------------------
93          GC      1           10          1           Schwerkraftbahn     Schwerkraftbahn
94          LD      -1          10          NULL        NULL                ?
95          LT      -1          10          NULL        NULL                ?
96          CC      -1          10          NULL        NULL                ?
97          TC      -1          10          NULL        NULL                ?
98          VC      -1          10          NULL        NULL                ?
99          RC      -1          10          NULL        NULL                                                                                                                                                                                         

Die NULLs werden also nicht ausgemustert! Eigentlich sollte nur der erste Datensatz angezeigt werden. Ein Join auf "f" also "f != '?' " wird mir ignoriert.

Ich habs auch schon versucht diesen Select als Subselect zu machen also:


select * from(
select....(siehe oben)
) tbla
where tbla.f is not null

Dies zeigte aber auch keine Wirkung...

Ich hab schon ein paar Leute gefragt, die mir das erst nicht glauben wollten, und als sie es sahen dann ratlos waren. Mein Kopf raucht... weiß echt nicht mehr weiter!
Ich hoffe mir kann von euch jemand helfen!
Danke schon mal!

Achja, noch ne kleine Bemerkung:
Zu evtl. kommenden Fragen, wie z.B. "warum machst du einen left-Join und streichst die so dazugewonnenen Daten mit 'is not null' wieder raus?" möchte ich gleich sagen (und bitte nicht in den falschen Hals kriegen):
Der Select is sonst OK. Mir geht es rein um das "is not null"!

10.11.2005 - 10:22 Uhr

Danke!
Klappt einwandfrei!

09.11.2005 - 15:11 Uhr

Tag!
Kann mir wer nen Tip geben, wie man eine tr verschiebt oder kopiert?
Ich hab zwei tables. Von table1 will ich die letzte zeile im table2 haben, mit allen Unterelementen.

Normalerweise würde ich sagen:


table2.rows[0] = table1.rows[table1.rows.length-1];

War aber nix. (table2.rows[0] existiert bereits)

22.09.2005 - 11:56 Uhr

Tag!
Wie wird eigentlich bestimmt in welcher Reihenfolge Controls auf einer Seite geladen werden? Wie kann man das beeinflussen?

Ich schreibe zwei voneinander unabhängige Controls, die trotzdem indirekt (über Sessionvariablen) abhängig voneinander sind. Die Information die ich im 1. Control in die Session schreiben kann weiß ich erst ab LoadPostData. Im 2. Control brauche ich diese Information noch vor dem Load, also auch in der LoadPostData. Wie kann ich steuern, dass die einzelnen Funktionen des Lenbenszyklus der Controls vom 1. Control vor dem 2. aufgerufen werden?

11.09.2005 - 19:29 Uhr

Dann müsst ich ja für mehrere Properties zusätzlich noch je ein Property zur Verfügung stellen, das angibt, ob ich Zugriff auf die eigentliche Information habe oder nicht.
Außerdem muss ich IsInitialized entweder mit true oder false initialisieren. Ich will mich nicht unbedingt darauf verlassen dass immer das CanAccess mit abgefragt wird. Ich persönlich fände das auch lästig.
Und ich glaube, das mit der Exception schon ok. So wird man auf den Fehler hingewiesen. Mit dem Zusatzproperty, wenn vergessen, treten manchmal Ungereimtheiten auf und man weiß nicht genau worans liegt.

Wenn wer ne Lösung für mein Problem hat, wär ich echt dankbar. Es muss ja irgendwie gehen, bei den Klassen vom Framework funktionierts ja auch.

09.09.2005 - 17:18 Uhr

unter 2.0 gibt es die Klasse Nullable, mit der auch für Werttypen wie bool das Zurückgeben von null möglich wird.

das wär halt schon top, aber leider haben wir noch nicht das 2.0er.

Was wäre für die Exception-Variante die Lösung.

09.09.2005 - 16:54 Uhr

hallo herbivore!

wenn Item null ist, sollte Count gar nicht aufgerufen werden. Wenn es nicht null ist, ist es m.E. unpassend, eine NullReferenceException zu schmeißen

Da hast du recht. Items.Count war nur ein Beispiel.
Ich hab u.a. ein Property "IsInitialized" vom Typ bool für ein Control. (Ich sollte dazusagen dass es sich um eine WebControl in ASP.Net handelt.) Zu bestimmten Zeitpunkten möchte ich den Zugriff auf dieses Property verweigern bzw. klarmachen, dass diese Eigenschaft nicht zur Verfügung steht. Ich würde am liebsten null zurückgeben, aber beim bool wird mir nichts anderes übrig bleiben als eine NullReferenceException zu schmeißen.
Im Prinzip funktioniert das, aber der Ursprung der Exception ist das schmeißen der Exception, also "throw new System.NullReferenceException();" selbst. Wenn mit diesem Control gearbeitet wird und eine Exception auftritt bei der der Ursprung der eben genante ist und nicht der Aufruf/Zugriff auf das Property, kann der Entwickler nicht viel damit anfangen. Klar kann er über den Stack Trace nachschauen, aber ich finde das unschön. Z.B. ist der Ursprung beim "reader.GetValue(0);", wenn kein Datensatz vorhanden ist ja auch der Funktionsaufruf und nicht das Statement bei dem in der GetValue-Funktion die Exception geworfen wurde.

Ich denke, diesmal kann man verstehen was ich will.

Mit 'new StackTrace (1)' bekommt man einen StackTrace ohne die aufrufende Methode Wie meinst du das? Das Exception.StackTrace ist schreibgeschützt und ein string.

09.09.2005 - 15:34 Uhr

Tag!

Ich hab ein Property in dem ich eine Exception auslösen will.
Wenn ich das mache wird mir als "Ursprung" das throw-Statement
angezeigt. z.B.


throw new System.NullReferenceException();

Ich möchte aber, dass der Aufruf des Properties angezeigt wird, in dem die Exception aus gelöst wurde. z.B.
Code:


if (Items.Count == 0)

(wobei "Count" für dieses Property steht)

Wer kann mir helfen?

09.08.2005 - 10:43 Uhr

Kann man auch ohne Serialisierung tief kopieren?
Ein Control z.B. ist ja nicht Serialisierbar und hat auch keine ICloneable implementiert.

02.08.2004 - 18:08 Uhr

Servas!

Hab n paar probleme beim drucken.
Ich erstell mir ne neue seite mit den ganzen daten in der asp:table. dann wird mit javaScript (window.print()) gedruckt.
soweit alles wunderbar, aber:

ich hab in der tabelle n label mit nem border von 2pt. wenn die Seite jetzt umbricht liegt der obere teil des borders und kleine ansätze der ränder auf der alten seite und der rest auf der neuen.
sieht dann ungefähr so aus:

wie kann ich das verhindern?
Habs schon mit .Style.Add("page-break-before", "avoid");
versucht, zeigt aber null wirkung.

Schon mal im vorraus danke für alle antworten

14.07.2004 - 17:16 Uhr

danke!
Was bringt mir der IPostbackDataHandler?

kann ich mitm Repeater einzelne felder hervorheben z.B. andere schriftfarbe, -größe, .... oder Textboxen oder DropdownListen reinstecken?

13.07.2004 - 16:04 Uhr

ich les die daten aus ner datenbank, nachdem ich auf nen button geklickt hab.
des wär zwar ne möglichkeit, würde aber zu lange dauern, da ich dann bei jedem postback den select nochmal ausführen müsste

13.07.2004 - 15:23 Uhr

so servus!
ich hätt da mal folgendes problem:

ich hab nen asp:table, da schreib ich dynamisch irgendwelche Daten rein.
wenn jetzt aber irgendein event ausgelöst wird (z.B. Button1_click) dann sind die daten nicht mehr im table.
ich hab mal versucht das Table-Objekt selbstständig im ViewState zu speichern, bringt mir aber eine exception :
"The type 'System.Web.UI.WebControls.Table' must be marked as Serializable or have a TypeConverter other than ReferenceConverter to be put in viewstate."

Gibts irgendeine Möglichkeit dass meine daten nach dem postback doch noch vorhanden sind, ohne jetzt groß ableiten zu müssen?

ich möchte auf jeden fall beim asp:table bleiben und nicht auf DataGrids oder ähnliches umsteigen.

Bin für jede Art von Hilfe dankbar!