Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VB.NET in einer ASP.NET Webanwendung

Empfohlene Antworten

Veröffentlicht

Hallo Leute!

ich entwickle z.Z. eine ASP.NET Webanwendung mit VB...

nun habe ich allerdings ein problem mit dem VB - Code.... vielleicht kann mir jemand von euch helfen?

ich wär seeeehr dankbar!!!

also .. ich rufe die funktion tourenArray() aus der PageLoad auf und baue dort ein Array auf, welches ich dann zurückgeben und in der PageLoad verwenden möchte... dieses funktioniert aber nicht, weil der compiler mir anmeckert, dass dieses array nich in der PageLoad deklariert ist...

weiß einer wie ich das löse?


Sub Page_Load()


        Dim strSQL As String

        Dim feldName As String

        Dim merkLetzteTour As String

        Dim merkVeränd As Integer

        Dim i As Integer

        Dim j As Integer

        Dim k As Integer



        ' Ermitteln, wieviele Touren verändert worden sind:

        strSQL = "SELECT COUNT(*)"

        strSQL = strSQL & " FROM dbo.T_NOTFAX WHERE Changed = 1 GROUP BY Tournummer"

        merkVeränd = HolMeinWert(strSQL)



        For i = 0 To merkVeränd


            ' Touren holen und in ein Array packen:

            strSQL = "SELECT Tournummer FROM dbo.T_NOTFAX"

            strSQL = strSQL & " WHERE Changed = 1 GROUP BY Tournummer"

            tourenArray(strSQL)


            For k = 0 To j

                Dim alleTouren As String

                alleTouren = alleTouren & " " & strArray(k)

                div1.InnerHtml = alleTouren

            Next


        Next



    End Sub




**************************************************************


    Function tourenArray(ByVal strSQL As String)

        Dim j As Integer = 0

        Dim strArray(j)


        Dim strConnect As String

        strConnect = ConfigurationSettings.AppSettings("connOLEDB")

        Dim connection As New OleDbConnection(strConnect)

        Dim command As New OleDbCommand(strSQL, connection)


        connection.Open()

        Dim reader As OleDbDataReader = command.ExecuteReader()

        While reader.Read()

            ReDim Preserve strArray(j)

            strArray(j) = reader(0).ToString

            j = j + 1

            reader.Read()

        End While

        reader.Close()

        ReDim Preserve strArray(j)

        Return strArray(j)


    End Function

hmmm,

in PageLoad rufst du die Funtion TourenArray auf, welche dir dein Array füllt,

das Array ist allerdings private, das heisst PageLoad kennt das Array strArray gar nicht,

strArray = tourenArray(strSql)

oder du machst das strArray halt public (hmmnaaajaaaaaa...)

Ausserdem vermisse ich irgendwie den Datentyp der Funktion?

Und die Funktion gibt nicht das komplette Array zurück sondern nur das element an der Stelle j...

Sorry bin C# - ler....

Das ist mir jetzt alles mal so aufgefallen, hoffe konnte dir weiter helfen....:)

mfg

MSC

aaaah...

ok, aber deine tips sind sehr hilfreich!... danke erstmal, ich werde es versuchen hinzubekommen!!

:):)

Die tourenArray-Function ist erstmal nicht so gut. Du erstellst erst ein Array mit 0 elementen und vergrössertst das dann, dazu muss aber jedes mal das komplette Array kopiert werden, das ist total langsam. Nimm lieber eine ArrayList oder ein Dictionary und konvertiere die zum Schluss zu einem Array.

In der PageLoad solltest du nicht bei jedem Load auf die Datenbank zugreifen.

Dann nimmst du den Rückgabewert deiner Function nicht entgegen, kannst also nicht feststellen was das Ergebnis war.

Auf das strArray kannst du in der Methode nicht zugreifen weil es in der Methode nicht definiert ist.

Und: kleine Design-Tipps:

* In der Codebehind-Datei sollte kein SQL Code stehen, besser ein einer eigenen Datenzugriffsschicht erledigen.

* Über die Veränderungen kannst du dich auch mit mit einem NotifyCache informieren lassen wenn du Oracle oder SQL Server 2005 verwendest

* Den SQL Code sollte man nicht mit String Operationen zusammensetzen, das ist anfällig für SQL Injection. Besser Parameter verwenden.

hmmm,

in PageLoad rufst du die Funtion TourenArray auf, welche dir dein Array füllt,

das Array ist allerdings private, das heisst PageLoad kennt das Array strArray gar nicht,

strArray = tourenArray(strSql)

oder du machst das strArray halt public (hmmnaaajaaaaaa...)

Ausserdem vermisse ich irgendwie den Datentyp der Funktion?

Und die Funktion gibt nicht das komplette Array zurück sondern nur das element an der Stelle j...

Sorry bin C# - ler....

Das ist mir jetzt alles mal so aufgefallen, hoffe konnte dir weiter helfen....:)

mfg

MSC

Nicht ganz, wenn das Array Private oder Protected wäre würde es funktionieren. Es ist aber lokal in der Methode definiert. Der Rückgabetyp fehlt allerdings, das stimmt.

ok, erstmal danke für eure antworten!

ja, auf diesem gebiet bin ich auch nich fit.. versuche es mir selber beizubringen....

ich habe jetzt das strArray außerhalb aller functions und sub als public deklariert

, was ich aber nicht verstehe, ist:

wie übergebe und vor allem EMPFANGE ich das array (bzw. die arrayList, wenn ichs dann doch noch umbaue) richtig??

weil das nämlich zur zeit noch der hauptfehler ist bei mir...

kann mir da einer kurz sagen wie ich das richtig mache?

wäre super :)

naja wenn du das array doch nun public hast brauchst du doch nix mehr zu übergeben. Dann ist es ja überall bekannt... Ob das n guter Stil ist ist die andere Frage...

Mal n schnelles Beispiel wie du ein Array an eine Funktion übergeben kannst.

Private Function FillArray(strArray() As String)

Dim i As Integer

While i < 10

strArray(i) = "TEST"

i = i + 1

Wend

End Function

Private Sub Form_Load()

Dim strArray(10) As String

Dim i As Integer

Call FillArray(strArray)

While i < 10

MsgBox strArray(i)

i = i + 1

Wend

End Sub

ok, vielen vielen dank!

jetz klappt das!...

:):)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.