Falscher Verweis ?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Falscher Verweis ?

    Hallo liebes Forum !

    Ich bin noch relativ neu in VB, deshalb schonmal vorab eine Entschuldigung falls sie zu laienhaft sind :P
    Mein Problem besteht darin, dass ich oft den Code den ich finde um damit ein wenig rumzuprobieren nicht direkt nutzen kann.
    Ich verwende Visual Studio 2017 RC, mein Projekt ist ( glaube ich :/ ) in VB.net und würde gerne direkt mal ein Beispiel zeigen. Hier ein Grundgerüst um eine Listview zu füllen welches ich gefunden habe:

    Quellcode

    1. Dim ADOC As New ADODB.Connection
    2. Dim dbs As New ADODB.Recordset
    3. Dim colHeader As ColumnHeader
    4. Dim lstItem As ListViewItem
    5. ADOC.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPfad)
    6. dbs = ADOC.openRecordset("SELECT Auftrag FROM Aufträge WHERE STATUS LIKE NEU")
    7. Me.ListView2.View = lvwReport
    8. ' Set up column headers
    9. With ListView2.ColumnHeader
    10. .Add("Spalte1", 2880)
    11. .Add("Spalte2", 1440)
    12. .Add("Spalte3", 1000)
    13. End With
    14. ' Add items and subitems to list control.
    15. dbs.MoveFirst()
    16. Do Until dbs.EOF
    17. lstItem = ListView2.ListItems.Add()
    18. lstItem.Text = dbs!Auftrag 'Spalte1
    19. lstItem.SubItems(1) = dbs!Kunde 'Spalte2
    20. lstItem.SubItems(2) = dbs!Artikel 'Spalte3
    21. dbs.MoveNext()
    22. Loop
    23. dbs.Close()
    24. End Sub


    Ich konnte den Code schon ein wenig anpassen, vorher waren zb noch "set" befehle drin, oder beim Spalten hinzufügen war es so ".Add, , Spalte1, 2880" augfebaut - aber soweit sogut.
    Nun weiß ich allerdeings nicht weiter:
    "lvwReport" wurde nicht deklariert
    "ColumnHeader" ist kein Member von "Listview", genauso wie "add" ... und noch ein paar andere, aber es soll ja nur ein Beispiel sein.

    Liegt das grundsätzlich an meinen Verweisen ? Ist das was ich als Codebeispiel gefunden habe eine komplett andere Sprache ? :/
    Ich habe in meinen Verweisen Microsoft ActiveX Data Objekts 2.8 Library aktiviert - Ist es besser da auf 6.0 oder gar 6.1 zu gehen ? 8|
    Gibt es noch andere Verweise a la "die sollte man Standardmäßig aktivieren" wenn man seine ersten Schritte wagt ?

    Ich hoffe ich hab das jetzt ins richtige Forum gepackt und jemand könnte mir ein paar kurze Tips geben :)

    LG,
    DDD
    Grundsätzlich gilt: DataGridView anstatt ListView. Mit dem dgv hast du einfach mehr Möglichkeiten und bist flexibler.
    Ausserdem bringt dir das Kopieren und Einfügen von Code recht wenig weil du dabei nicht viel lernst. Ich seh in deinem Code nirgendswo was lvwReport sien soll, es ist nirgends deklariert. Liegt wahrschienlich darin wiel du nicht den gesamten Code kopiert hast.
    Hier könnte meine Signatur stehen.
    Hi mox !

    Danke für den Tip mit der DataGridView :)
    Ich hab für mich rausgefunden, dass ich mit "Code kopieren und anschließend auf meine Bedürfnisse umstricken" wesentlich besser verstehe wie was funktioniert als ihn Stück für Stück selbst zu schreiben ( denn davon bin ich sehr weit entfernt :/ )
    Der Code war soweit komplett, aber es scheint auch ohne lvwReport zu funktionieren ^^

    Quellcode

    1. Dim ADOC As New ADODB.Connection
    2. Dim dbs As New ADODB.Recordset
    3. Dim lstItem As ListViewItem
    4. Dim abfrage As String
    5. ADOC.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPfad)
    6. abfrage = "SELECT Auftrag, Kunde, Artikel FROM Aufträge WHERE STATUS = 'NEU'"
    7. ' Set up column headers
    8. With ListView2.Columns
    9. .Add("Auftrag")
    10. .Add("Kunde")
    11. .Add("Artikel")
    12. End With
    13. ' Add items and subitems to list control.
    14. With dbs
    15. .ActiveConnection = ADOC
    16. .CursorType = ADODB.CursorTypeEnum.adOpenKeyset
    17. .LockType = ADODB.LockTypeEnum.adLockPessimistic
    18. .Open(abfrage)
    19. Do Until dbs.EOF
    20. lstItem = ListView2.Items.Add
    21. lstItem.Text = .Fields("Auftrag").Value
    22. lstItem.SubItems(1) = .Fields("Kunde").Value
    23. lstItem.SubItems(2) = .Fields("Artikel").Value
    24. .MoveNext()
    25. Loop
    26. dbs.Close()
    27. End With


    Soweit hab ich ihn mittlerweile umgemodelt, funktioniert auch soweit bis zum füllen der ListView :/
    Falls da wer einen Hinweis hätte ? :whistling:

    LG,
    DDD
    Stimmt, da hast du recht - ein paar Umgebungsinformationen wären wohl noch von Vorteil ^^
    Aaaalso ich habe zum testen eine eine Access Datenbank mit Tabelle "Aufträge" - in dieser sind 4 Spalten: Auftrag, Kunde, Artikel und Status. In der ListView wollte ich die Aufträge anzeigen lassen die mit dem Status "NEU" versehen sind.
    Von dem her kann ich also die Daten nicht per Hand in die Liste eintragen.

    LG,
    DDD
    Wenn du ein Dgv nimmst und als Datasource der dgv deine db datatable auswählst, dann musst du nur noch dein Select query ausführen und alles wird automatisch angezeigt.
    Im VS Ansicht>Weitere Fenster>Datenquellfenster. Dann eine neue Datenquelle hinzufügen, dort wählst du deine Datatable aus. Nun erstellt VS für dich deine Controls und du kannst sie einfach auf diene Form ziehen.
    Hier könnte meine Signatur stehen.
    Supi danke dir !
    Das schaut schon recht ordentlich aus :)
    Aber nur zu meinem Verständnis - wie müsste ich denn

    Quellcode

    1. ...
    2. ListView2.Items.Add(.Fields("Auftrag").Value)
    3. ListView2.Items.Add(.Fields("Kunde").Value)
    4. ListView2.Items.Add(.Fields("Artikel").Value)
    5. .MoveNext()
    6. Loop
    7. dbs.Close()
    8. End With


    dashier umstellen, damit er die Werte in die ListView einträgt ?

    LG,
    DDD

    edit:
    habs hinbekommen :thumbsup:
    falls es mal wer brauchen sollte - so schauts jetzt aus :) :

    Quellcode

    1. Dim ADOC As New ADODB.Connection
    2. Dim dbs As New ADODB.Recordset
    3. Dim lstItem As New ListViewItem
    4. Dim abfrage As String
    5. ADOC.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPfad)
    6. abfrage = "SELECT Auftrag, Kunde, Artikel FROM Aufträge WHERE STATUS = 'NEU'"
    7. ListView2.View = View.Details
    8. With ListView2.Columns
    9. .Add("Auftrag", 150, HorizontalAlignment.Left)
    10. .Add("Kunde", 150, HorizontalAlignment.Left)
    11. .Add("Artikel", 150, HorizontalAlignment.Left)
    12. End With
    13. With dbs
    14. .ActiveConnection = ADOC
    15. .CursorType = ADODB.CursorTypeEnum.adOpenKeyset
    16. .LockType = ADODB.LockTypeEnum.adLockPessimistic
    17. .Open(abfrage)
    18. .MoveFirst()
    19. Do Until .EOF
    20. lstItem = ListView2.Items.Add(.Fields("Auftrag").Value)
    21. lstItem.SubItems.Add(.Fields("Kunde").Value)
    22. lstItem.SubItems.Add(.Fields("Artikel").Value)
    23. .MoveNext()
    24. Loop
    25. dbs.Close()
    26. End With


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

    DingDangDong schrieb:


    habs hinbekommen :thumbsup:
    falls es mal wer brauchen sollte - ... :) :

    Quellcode

    1. Dim ADOC As New ADODB.Connection
    2. Dim dbs As New ADODB.Recordset
    3. Dim lstItem As New ListViewItem
    4. '...
    Das braucht hoffentlich niemand.
    ADODB: vb6 - Grütze. Ado.Net ist zumindest annähernd Stand der Technik.
    ListViewItem: vb6-Grütze, und unterstützt kein Databinding.

    Databinding wäre aber Stand der Technik.

    Bei Interesse fragen, ansonsten lasses halt so.