[datagridview] daten über mehrere buttons aus verschiedenen tabellen in eine "row" eintragen und nicht versetzt in den rows anzeigen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von icemanns.

    [datagridview] daten über mehrere buttons aus verschiedenen tabellen in eine "row" eintragen und nicht versetzt in den rows anzeigen

    hi,

    ich habe nun mein kleines tool soweit das es so einigermaßen läuft wie ich das möchte.
    ich wollte es nun erweitern und ein paar daten aus anderen tabellen mit anzeigen
    ( nur anzeigen :) )

    soll zustand:


    ist zustand :


    hier mein code :

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports MySql
    2. Imports MySql.Data
    3. Imports MySql.Data.MySqlClient
    4. Imports System.Collections.Specialized, System.Net
    5. Imports System.Text
    6. Imports System.Security.Cryptography
    7. Imports System
    8. Imports System.IO
    9. Imports System.Threading
    10. Imports Microsoft.Win32
    11. Imports System.Data.SqlClient
    12. Public Class Form1
    13. Dim myConnectionString As String = "server='xxxx';uid='xxxxx';pwd='xxxxx';database='xxxxx';"
    14. Dim conn As New MySql.Data.MySqlClient.MySqlConnection(myConnectionString)
    15. Dim dt As New DataTable ' DataTable enthält die via DataAdapter angepassten Daten der Datenbank)
    16. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    17. Dim da = New MySql.Data.MySqlClient.MySqlDataAdapter("SELECT id,titel FROM `url` limit 3", conn)
    18. conn.Open()
    19. da.Fill(dt)
    20. DataGridView1.DataSource = dt
    21. conn.Close()
    22. Dim da2 = New MySql.Data.MySqlClient.MySqlDataAdapter("SELECT dl_link FROM `url2` limit 3", conn)
    23. conn.Open()
    24. da2.Fill(dt)
    25. DataGridView1.DataSource = dt
    26. conn.Close()
    27. Dim da3 = New MySql.Data.MySqlClient.MySqlDataAdapter("SELECT link FROM `url3` limit 3", conn)
    28. conn.Open()
    29. da3.Fill(dt)
    30. DataGridView1.DataSource = dt
    31. conn.Close()
    32. End Sub
    33. End Class


    die imports oben einfach mal ignorieren und das strict off bzw explizit fehlen auch.

    soll ich nun versuchen herzugehen und zeilenweise ( 6000 zeilen in der db für url ) zu erweitern
    oder gibt es da n besseren trick ?


    EDIT : ich muss die selects separieren, weil es u.U. sein kann/wird das ich das auf 2-xxx buttons aufteilen werde.
    was aber zu 100% sicher ist : alle haben die selbe 'id' als primary uniq index worüber sie zusammen passen.
    mein problem ist aber warum ich kein join usw nehmen kann : ich kann die buttons in verschiedenen reihehfolgen
    und manche auch garnicht anklicken ;(

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Triple-Axe“ ()

    ok sry da habe ich ein wenig zu ungenau erklärt verzeiht


    buttons :

    ich habe ja 2-3 spalten die auf jeden fall angezeigt werden

    a b c


    die d e f g h i j "können" in verschiedener reihenfolge geklickt ( oder auch ausgelassen ) werden
    um bestimmte spalten nicht nutzen zu müssen


    fragen :


    1.)also geht das nicht so einfach "per code" muss ich demnach ne art assoziativtabelle bzw ein
    if / select case konstrukt bauen über welches ich die möglichen fälle abarbeite um so das ergebniss
    was ich möchte hinzubekommen ?

    2.) ich kann einem dgv nicht einfach sagen : lösche in spalte x alles bis inkl row(7) ?

    hoffe es ist verständlicher
    leider nein - ich kapiere nix

    Triple-Axe schrieb:

    buttons :

    ich habe ja 2-3 spalten die auf jeden fall angezeigt werden

    a b c


    die d e f g h i j "können" in verschiedener reihenfolge geklickt ( oder auch ausgelassen ) werden
    um bestimmte spalten nicht nutzen zu müssen
    was haben buttons mit spalten zu tun?
    a, b, c scheinen Spalten zu sein - sind d,e,f... auch spalten?
    seit wann kann man spalten klicken - das macht man doch normalerweise mit buttons?

    1.)also geht das nicht so einfach
    was soll gehen? klicken? spalten? Zeilen verbergen? Zeilen löschen?
    "per code" muss ich demnach ne art assoziativtabelle bzw ein
    if / select case konstrukt bauen über welches ich die möglichen fälle abarbeite um so das ergebniss
    was ich möchte hinzubekommen ?
    Kann ich nix zu sagen - ich habe keinerlei Vorstellung von deinem erwünschten ergebnis

    2.) ich kann einem dgv nicht einfach sagen ... ?
    Also Leuts, die ihren Controls irgendetwas "sagen", die müssen sich meist noch erheblich Grundlagen erwerben - so meine Erfahrung.

    lösche in spalte x alles bis inkl row(7) ?
    löschen bedeutet bei mir, dass etwas entfernt wird. Man kann Datensätze löschen, man kann aus einer Tabelle auch Spalten löschen (und damit alle datensätze, die diese Spalte enthielten, ungültig machen), aber man kann nicht in einer Tabelle in bestimmten Zeilen Spalten löschen, und in anneren Zeilen diese Spalten bestehen lassen.

    vmtl. meinst du, dass man den Datensätzen der Zeilen 1 - 7 in bestimmten Spalten Nullwerte zuweist?
    sieht man das problem so besser ?

    youtube.com/watch?v=y4m_uSBQ2eM&feature=youtu.be


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. 'DataGridView1.Rows.RemoveAt(3)
    3. Dim da = New MySql.Data.MySqlClient.MySqlDataAdapter("SELECT id,titel FROM `url` limit 3", conn)
    4. 'dt.Clear()
    5. conn.Open()
    6. da.Fill(dt)
    7. DataGridView1.DataSource = dt
    8. conn.Close()
    9. End Sub
    10. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    11. Dim da2 = New MySql.Data.MySqlClient.MySqlDataAdapter("SELECT dl_link FROM `url2` limit 3", conn)
    12. 'dt.Clear()
    13. conn.Open()
    14. da2.Fill(dt)
    15. DataGridView1.DataSource = dt
    16. conn.Close()
    17. End Sub
    18. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    19. Dim da3 = New MySql.Data.MySqlClient.MySqlDataAdapter("SELECT link FROM `url3` limit 3", conn)
    20. 'dt.Clear()
    21. conn.Open()
    22. da3.Fill(dt)
    23. DataGridView1.DataSource = dt
    24. conn.Close()
    25. End Sub
    Variante a) les dein SQL ordentlich ein und binde es nicht an nen Datagrid und nutz Linq

    zu deiner Frage ob du einfach rows löschen kannst -> klar kannst du das -
    meindatagrid.Rows.Remove(meindatagrid.SelectedRows(0)) => nen Datagrid ist halt primär Optik und hat erst mal nix mit einer Datenbanktabelle am Hut, die lassen sich da nur gut darstellen.

    bastimw schrieb:

    Variante a) les dein SQL ordentlich ein und binde es nicht an nen Datagrid und nutz Linq

    zu deiner Frage ob du einfach rows löschen kannst -> klar kannst du das -
    meindatagrid.Rows.Remove(meindatagrid.SelectedRows(0)) => nen Datagrid ist halt primär Optik und hat erst mal nix mit einer Datenbanktabelle am Hut, die lassen sich da nur gut darstellen.


    ich will nicht rows löschen sondern in bestimmten spalten die leerzellen nach "oben" löschen und den inhalt darunter nach "oben" verschieben wies auch in excel geht
    ok dann muss ich mir da was ausdenken wie ich das abfrage
    welche teile gebracuht werden und welche nich x( aber in eine datenbank geht leider nicht da ich nur
    lesenden zugriff auf die live daten habe und auch nicht mehr brauche ;)

    ich danke dir aber
    Warum holst du dir die Daten nicht einmal komplett per Join in ein DataSet und arbeitest anschließend bei den Click_Events mit DataViews?
    So sollte es sich verhindern lassen das die Daten in 3 verschiedene Tabellen kommen, weil du sie ja im DataSet hast und von diesem nur ne View in der richtigen Reihenfolge erstellst.

    Oder du arbeitest mit dem DataReader und befüllst die jeweiligen Zeilen des GV per "Hand", ist zwar nicht schön usw. aber erfüllt in deinem Fall den nötigen Zweck.

    Gruß