Public Function oder Public Sub unterschied?

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Eine Sub ist eine Methode, die Dir nichts zurückgibt. Eine Function muss immer einen Rückgabewert deklarieren und dann bekommst Du einen Wert zurück.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. Methode()
    4. Console.WriteLine(HelloWorld())
    5. End Sub
    6. Private Sub Methode()
    7. Console.WriteLine("Hello World - Methode")
    8. End Sub
    9. Private Function HelloWorld() As String '<= gibt eine String zurück
    10. Return "Hellow World - Function"
    11. End Function
    12. End Module

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Facebamm“ ()

    @Didinator Das kommt darauf an, was Du vorhast.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade

    VB.NET-Quellcode

    1. Public Function Search_tbl()
    2. Dim ConnString_Search_tbl As String
    3. Dim MyConnection_Search_tbl As OleDbConnection = New OleDbConnection
    4. ConnString_Search_tbl = My.Settings.Products_DB_Connection
    5. MyConnection_Search_tbl.ConnectionString = ConnString_Search_tbl
    6. MyConnection_Search_tbl.Open()
    7. Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [tbl_tbl_Allocation] WHERE [Product] = '" & clbDeskValue.Text & "'", MyConnection_Search_tbl)
    8. Dim dr As OleDbDataReader = cmd.ExecuteReader
    9. Dim userFound As Boolean = False
    10. While dr.Read
    11. userFound = True
    12. TabellName = dr("tbl").ToString
    13. End While
    14. If userFound = True Then
    15. Else
    16. End If
    17. MyConnection_Search_tbl.Close()
    18. End Function


    Es ist nur ein Datenbankzugriff und die Rückgabewerte wurden bereits Global definiert. :)
    Dies könnte ich ja dann auch als sub definieren :)

    @Facebamm Danke für die schnelle Hilfreiche Antwort
    @Trade Danke für die schnelle Hilfreiche Antwort

    Werde Thread schließen weil ich die Antworten von euch habe :)
    Setup Fotoalbum:

    100%


    Fotoalbum:

    50%

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Didinator“ ()

    Also wenn Du hier schon eine Function deklarierst, dann fehlt der Rückgabetyp. Mach mal Option Strict On.
    Und wenn Du nichts zurückgibst, dann ist es natürlich eine Sub. Das kommt auch immer auf die Architektur an und was die Prozedur machen soll. Wenn das eigentlich nur TabellName = dr("tbl").ToString setzt, dann könnte man den Wert auch zurückgeben.
    Aber das kommt eben auch darauf an, wie die komplette Klasse aufgebaut ist.

    btw: Schütz Den Code unbedingt vor SQL-Injection!

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    VB.NET-Quellcode

    1. Option Strict On
    2. Module Module1
    3. ' ...
    4. end Module


    Wäre das was für dich, dann brauchst du nur noch die Querys anpassen? <Link>
    Basiert auf kwoxer.de/2014/09/25/sqlite-da…net-erstellen-und-nutzen/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Facebamm“ ()

    Didinator schrieb:

    VB.NET-Quellcode

    1. Dim MyConnection_Search_tbl As OleDbConnection = New OleDbConnection
    Wenn mehrere Prozeduren (Sub oder Function) darauf zugreifen, ist es sinnvoll, solche Variablen aus der Prozedur in die Klasse zu verschieben.
    Auch wenn Variablen während der ganzen Laufzeit des Programmes benötigt werden, sollten sie in der Klasse stehen.
    Und wenn Du ein streng gekapseltes Problem hast, pack es in eine separate Klasse mit ihren eigenen Methoden, Propetrtys und Variablen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    @Didinator Über welche Programmiererfahrungen verfügst Du?
    Wenn Du noch Anfänger bist, wird es eine Weile dauern, bis Du Dir einen guten Stil angeeignet hast. Sieh Dir dazu hier im Forum die Snipets der "erfahreneren Kollegen" an.
    Wenn Du professionell eionsteigen willst, wird es so sein, dass Firmen ihre eigenen Codierungsrichtlinien haben, die dann verbindlich, nicht aber unbedingt perfekt sind.
    Du wirst merken, dass, wenn Du Dir in einem halben oder einem Jahr einen Quelltext von Ditr ansiehst, Du einiges anders, vieles besser machen würdest.
    Das ist völlig normal und auch gut so. Lass es auf Dich zukommen und versuche, gut zu sein, nicht perfekt. Das dauert lange, wachse mit Deinen Aufgaben.
    Und:
    Es gibt nur zwei Sorten von Programmierern:
    • Spitzenprogrammierer
      und
    • überdurchschnittliche Programmierer.
    Es kann also gar nix passieren. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    @RodFromGermany Ich programmieren schon ca 1 Jahr :)

    Natürlich geben bestimmte Firmen den Stil vor, nur ich mache das nicht Hauptberuflich sondern nur nebenbei. :)

    Diese Software die ich gerade erstelle ist zurzeit nur eine Betaversion die natürlich noch Quellcodemässig verbessert wird. :)

    Hauptsächlich bin ich SPS Programmierer und arbeite mit TIA Portal V13/V14 von Siemens und mit Codesys von 3S Software :)

    Werde aber natürlich den Tipp mit Ditr beherzigen und werde mir seinen Quellcode natürlich ansehen und meinen anpassen :thumbsup:

    Ich Danke dir auch vom ganzen Herzen für die Tipps die Sie mir geben :)

    Natürlich kann ich Ihnen auch eine zensierte Kopie schicken wenn die Software in den Alpha Status geht.

    Zensiert deswegen weil mein Kollege dies nicht möchte das ich dir die Komplette Software schicke :)

    Jetzt muss ich aber weiterarbeiten ich melde mich, falls Sie noch etwas posten, morgen :)
    Setup Fotoalbum:

    100%


    Fotoalbum:

    50%

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Didinator“ ()

    @Didinator: Ehm, vielleicht mach ich jetzt gerade den Spaß bzw. die Ironie kaputt, aber das von RfG ist n Schreibfehler. Er meinte mit Ditr nicht irgendeinen Forenbenutzer, sondern DICH. Er wollte »Dir« schreiben und wollte damit sagen, dass Du in einem Jahr Deinen Code von heute mit ganz anderen Augen betrachten wirst.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    @VaporiZed @Didinator Lesen bildet.
    Ich korrigier das lieber nicht. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!