Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql VB.NET DataGridView->;添加列并用另一个单元格中的数据填充单元格_Mysql_Vb.net_Datagridview - Fatal编程技术网

Mysql VB.NET DataGridView->;添加列并用另一个单元格中的数据填充单元格

Mysql VB.NET DataGridView->;添加列并用另一个单元格中的数据填充单元格,mysql,vb.net,datagridview,Mysql,Vb.net,Datagridview,我有一个DataGridView,我用以下方式填充它: Function updategrid(ByVal CurrentBroker, ByVal CurrentPallet) Dim i = 0 Dim SQLText As String SQLText = "SELECT " & _ "invoer.idInvoer," & _ "invoer.BRKNo as Broker," & _ "invoer.Palletn

我有一个DataGridView,我用以下方式填充它:

Function updategrid(ByVal CurrentBroker, ByVal CurrentPallet)
    Dim i = 0
    Dim SQLText As String
    SQLText = "SELECT " & _
    "invoer.idInvoer," & _
    "invoer.BRKNo as Broker," & _
    "invoer.Palletno as Pallet," & _
    "invoer.Tabblad AS ValTabblad," & _
    "Tabblad.TabbladType, " & _
    "invoer.Hardwaretype as Hardwaretype," & _
    "invoer.Fabrikant AS Fabrikant," & _
    "invoer.Model As Model, " & _
    "invoer.Serienummer, " & _
    "invoer.AssetTag, " & _
    "invoer.Schade, " & _
    "invoer.Opmerkingen, " & _
    "Tabblad.idTabblad, " & _
    "invoer.details, " & _
    "invoer.aantal, " & _
    "invoer.RegisterDate " & _
    "FROM Invoer as invoer " & _
    "INNER JOIN Tabblad as Tabblad ON invoer.Tabblad = tabblad.idTabblad " & _
    "WHERE invoer.BRKNo = '" & CurrentBroker & "'" & _
    "AND invoer.PalletNo = " & CurrentPallet & "  " & _
    "ORDER BY invoer.RegisterDate DESC"

    ds.Tables.Clear()
    Try
        Data = New DataTable
        dataAdap = New MySqlDataAdapter(SQLText, dbconn)

        cmdBuilder = New MySqlCommandBuilder(dataAdap)
        dataAdap.Fill(ds, "Overzicht")
        With DGVOverzicht
            .DataSource = ds.Tables("Overzicht")
            .ColumnHeadersVisible = True
            .AutoGenerateColumns = True
            .Visible = True

            For i = 0 To .ColumnCount - 1 Step 1
                Select Case .Columns(i).HeaderText
                    Case "ValTabblad" : .Columns(i).Visible = False
                    Case "details"
                        ' hide the ID's, display text..
                        .Columns(i).Visible = False
                    Case "idTabblad" : .Columns(i).Visible = False
                    Case "idHWModel" : .Columns(i).Visible = False
                    Case "idHardware" : .Columns(i).Visible = False
                    Case "idInvoer" : .Columns(i).Visible = False
                End Select
            Next
        End With
        Return True
    Catch ex As MySqlException
        MsgBox(ex.Message)
        Return False
    End Try

    Return 1
End Function
这就像一个符咒,但我需要在我隐藏的列旁边添加一列:Details。 列详细信息保存记录中选定的所有详细信息的ID(例如1;5;2;19;20;100) 我想给用户提供更多关于实际选定细节的信息,例如,在MySQL中查找这些ID的实际细节

然而,我被告知不要在MySQL中对逗号分隔的列表进行内部连接,因为它会“像冰冻的蜗牛一样慢”。。 因此,我能想到的下一件事是用数据库中的所有信息填充DGV,隐藏ID列并“查找并替换”另一个单元格中的值,然后在MySQL中查找它

如果有人能为我指明这方面的方向,我将非常感激。。因为我现在盯着代码看了几个小时,没有一个灯泡出现:)

提前感谢


我想我终于做到了。 我所做的是在SQLstatemenr中选择一个额外的列(invore.idivore作为details_explain),这样我就有了一个额外的列可以使用,并且在我想要的位置上。 然后,我添加了以下代码来更改该列的内容:

    ' replace ID's in Details_Explain with ShortCodes from DGV

    For row = 0 To DGVOverzicht.Rows.Count - 1
        Dim strDetailsExplain = ""
        Dim DetailIDs As Array
        DetailIDs = Split(DGVOverzicht.Rows(row).Cells("details").Value.ToString, ";")
        For Each item In DetailIDs
            If Not item = Nothing Then
                strDetailsExplain = strDetailsExplain & DGV.Rows(Int(item)).Cells("DetailsCode").Value & ":"
            End If
        Next

        DGVOverzicht.Rows(row).Cells("Details_Explain").Value = strDetailsExplain
    Next

我想这不是最干净的方法,但必须这样做,因为我不知道更好的方法。

因为用户必须告诉他们要查看哪些详细信息(比如单击列),您应该能够使用行的ID创建新查询,列的内容和由单元格表示的项。或者,更糟糕的是,拆分并解析“详细信息”列并从中创建查询-似乎您仍需要获取DGV单元格以了解要使用哪对详细信息。用户将已经填写了详细信息,但我希望在DGVoverzicht中显示它们,而不是在idDetails的(0;1;2;3)中显示它们我想显示idShortCode的(DOA;BOA;DNU;SNO)等。。我通过索引存储细节,以便短代码可以随着时间的推移而改变,但定义没有改变。我很想知道如何使用“详细信息”列上的拆分结果,并将其显示到另一个(尚未创建)列中。。因此,顺序必须是:加载数据库-->拆分详细信息SID列,查询数据库中的定义-->创建具有逗号分隔格式定义的列-->doneI遵循其中的10%,因为我没有工件规格。与其将不同ID的数据折叠成字符串(例如1;5;2;19;20;100),不如将它们另存为其他隐藏列(ThisDetailID、ThatDetailID、FoodDetailId)。现在,当你需要某些详细信息时,你有了一个干净的起点。我正在创建的应用程序是注册应用程序。用户填写表单并在其中定义设备的某些方面。例如,设备的序列号和详细信息。详细信息是用户可以选择的预定义代码列表。用户填写完表单后,数据将保存到数据库中,DGVOverzicht(仅显示已放入数据库的所有数据的DGV)将刷新。在此DGV中,将显示数据库中的数据,以便用户可以选择一行并编辑数据。由于详细信息是按ID插入的,因此idDetails列以逗号分隔的列表(例如0;1;5;8)显示……idDetails列。我希望在另一列中显示这些细节的实际代码,而不是这个列表(这不是实际数据库的一部分,只是为了可读性)。这就是为什么我必须将idDetails列中的值拆分,并将它们显示到另一列中,其中的代码必须搜索到dabase中。。希望这更有意义?微小的变化。。我突然收到“默认DGV错误消息”,指出我的字符串不是有效的Int32。。(duh..)我将SQL语句更改为不选择int32值项,而是选择字符串项。。这让它再次发挥作用:)