Zum Inhalt springen

VB.NET in einer ASP.NET Webanwendung


BzudemO

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...