none
Wert einer Variable als ParamterWert und Wert als Type RRS feed

  • Frage

  • Hallo Zusammen,

     

    ich suche eine Möglichkeit für folgenden Ansatz:

     

    Es wird eine collection übergeben, in der zum einen der ParameterWert, der Paramtername und der ParamterTyp, ParameterConverter steht.

    Beispiel:

                       colTest.add("DBMessage","01ParameterName")

                       colTest.add("SqlDBType.Text","01ParameterType")

                       colTest.add("Hallo Welt","01ParameterValue")

                       colTest.add("convert.tostring","01ParameterConverter ")

     

    Diese Collection möchte ich dann als Paramterwerte deklinieren:

    Beispiel:

                      Dim p*1* as new SQLParamater("@*1*, *2*)

                      p*1*.Value = *4*(*3*)

    die *Zahl* = der Teil der Collection. Sprich im Code sieht dies dann so aus:

                      Dim pDBMessage as new SQLParamater("@DBMessage",SqlDBType.Text)

                      pDBMessage .Value = convert.tostring(colTest.Item("01ParameterValue"))

     

    Geht so was? und falls ja, wie löse ich das hier?

    Danke an alle.

    Gruss

    Torsten

    Donnerstag, 7. Oktober 2010 10:04

Antworten

  • Hallo Stefan,

     

      Danke. Dies war ein guter Ansatz.. Hätte ich auch selber drauf kommen können.

      Für alle anderen ich habe es nun so gelöst, was auch gut funktioniert:

     

       Die Definitionen habe ich über eine Structure gelöst.

       Also:

                    Public Structure Test

                         Public Value as Object

                         Public Type as SQLDBTyp

                  End Structure

        Danach Ablage der Daten in der collection

                  <collection>.add(<structureWerte<)

        Die collection wird dann entsprechend durchlaufen und die Werte als Parameterwerte zugewiesen.

     

    Funzt wunderbar

    Gruss

    Torsten

    • Als Antwort markiert Pattasatto Freitag, 8. Oktober 2010 09:21
    Freitag, 8. Oktober 2010 09:21

Alle Antworten

  • Hi,

    Diese Collection möchte ich dann als Paramterwerte deklinieren:

    Beispiel:

                      Dim p*1* as new SQLParamater("@*1*, *2*)

                      p*1*.Value = *4*(*3*)

    die *Zahl* = der Teil der Collection. Sprich im Code sieht dies dann so aus:

                      Dim pDBMessage as new SQLParamater("@DBMessage",SqlDBType.Text)

                      pDBMessage .Value = convert.tostring(colTest.Item("01ParameterValue"))

    Mit Ausnahme des Variablennamens und der Methodenaufrufe Ja. Den Variablennamen brauchst Du eh nicht in der Form, da das, wenn überhaupt, nur für eine dynamische Codegenerierung sinnvoll wäre. Ebenso bei den Methodenaufrufen wie convert.tostring( ... )

    Deine Überlegung geht aber ggfs. auch einfach in die falsche Richtung. Bau dir eine sinnvollere Struktur auf.

    Class Parameter
    
      Private _Name As String
      Private _Value As Object
      Private _Type As SqlDbType
    
      Public Property Name As String
        ...
      End Property
    
      Public Property Value As Object
        ...
      End Property
    
      Public Property [Type] As SqlDbType
        ...
      End Property
    
      Public Sub New( ... )
      
      End Sub
    
    End Class
    
    <Collection>.Add( New Parameter( "DBMessage",  "Hallo Welt", SqlDbType.Text ) )
    <Collection>.Add( New Parameter( "DBIrgendwas", 123,     SqlDbType.Int ) )
    
    For Each Item As Parameter in <Collection>.Items
      <ParameterCollection>.AddWithValue( String.Format( "@{0}", Item.Name ), Item.Value )
    Next
    

    Das Beispiel soll nur zeigen, wie man es in etwa aufbauen könnte. Da die gezeigte Klasse aber eigentlich identisch mit den SqlParametern ist, könnte man sie auch weglassen. Da ich aber davon ausgehe, dass Du da noch ein wenig mehr einbauen willst, kannst Du sie aber dennoch als Vorlage nehmen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Donnerstag, 7. Oktober 2010 10:28
    Moderator
  • Hallo Stefan,

     

      Danke. Dies war ein guter Ansatz.. Hätte ich auch selber drauf kommen können.

      Für alle anderen ich habe es nun so gelöst, was auch gut funktioniert:

     

       Die Definitionen habe ich über eine Structure gelöst.

       Also:

                    Public Structure Test

                         Public Value as Object

                         Public Type as SQLDBTyp

                  End Structure

        Danach Ablage der Daten in der collection

                  <collection>.add(<structureWerte<)

        Die collection wird dann entsprechend durchlaufen und die Werte als Parameterwerte zugewiesen.

     

    Funzt wunderbar

    Gruss

    Torsten

    • Als Antwort markiert Pattasatto Freitag, 8. Oktober 2010 09:21
    Freitag, 8. Oktober 2010 09:21
  • Hallo Torsten.

       Die Definitionen habe ich über eine Structure gelöst.

       Also:

                    Public Structure Test

                         Public Value as Object

                         Public Type as SQLDBTyp

                  End Structure

        Danach Ablage der Daten in der collection

                  <collection>.add(<structureWerte<)

        Die collection wird dann entsprechend durchlaufen und die Werte als Parameterwerte zugewiesen.

    auch wenn das natürlich geht, welchen Vorteil erhoffst Du dir von Structure in deinem Fall?

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 8. Oktober 2010 10:03
    Moderator