Insérer uniquement la zone de texte activée dans MySQL dans VB.Net
P粉043432210
P粉043432210 2024-02-21 19:42:03
0
1
426

Je crée un système de gestion des stocks dans VB.Net dont la fonctionnalité de base est de traiter les factures entrantes. Je souhaite insérer des données dans ma base de données MySQL distante, mais uniquement si la zone de texte est considérée comme activée. Je n'ai aucun problème à insérer des données dans la base de données lorsque je souhaite que tous les champs soient insérés. Mais je souhaite que les cases à cocher activent certains produits et permettent aux employés de saisir uniquement des éléments spécifiques. Les cases à cocher activent et désactivent les champs de texte selon les besoins, mais lorsque les données sont insérées dans la base de données, elles entreront des valeurs nulles pour tous les types de produits, ce que je ne veux pas qu'il fasse car cela perturberait le système de facturation. . Actuellement, j'ai essayé une instruction if then mais le problème que j'ai est qu'elle s'attend à ce qu'une zone de texte soit définie qui n'est pas activée. Le code que j'ai essayé est :

Public Sub btnEnter_Click(sender As Object, e As EventArgs) Handles btnEnter.Click

    Dim mysqlconn as new MySqlConnection ("ServerConnection")
    mysqlconn.Open()
    dim mysqlCmd as new MysqlCommand
    mysqlcmd.Connection = MysqlConn
    
    mysqlcmd.CommandText = "Insert into Table_Name (Column1,Column2,Column3) Values (@rec1,@Rec2,@Rec3)"
    
    If txtTextbox1.Enabled = True then
        mysqlcmd.Parameters.AddWithValue("@Rec1",Column1.text)
    End If
    
    If txtTextBox2.Enabled = True then
        mysqlcmd.Parameters.AddWithValue(@Rec2,Column2.text)
    End IF
    
    IF txtTextBox3.Enabled = True then
        mysqlcmd.Parameters.AddWithValue(@Rec3,Column3.text)
    End If

P粉043432210
P粉043432210

répondre à tous(1)
P粉739706089

Vous ne pouvez pas simplement insérer des colonnes sans lignes. Donc si vous souhaitez insérer une colonne, vous devez insérer toutes les colonnes. Si vous ne souhaitez pas ajouter de valeur, la colonne peut être NULL ou une chaîne vide, selon la colonne de la base de données. Vous pouvez également utiliser Using 并使用 Async/Await pour supprimer le travail de base de données de l'interface utilisateur

Public Async Sub btnEnter_Click(sender As Object, e As EventArgs) Handles btnEnter.Click
    ' if your columns take NULL to mean no value
    Await AddParams(
        If(txtTextbox1.Enabled, Column1.Text, Nothing),
        If(txtTextbox2.Enabled, Column2.Text, Nothing),
        If(txtTextbox3.Enabled, Column3.Text, Nothing))
    ' else, if an empty string means no value
    Await AddParams(
        If(txtTextbox1.Enabled, Column1.Text, ""),
        If(txtTextbox2.Enabled, Column2.Text, ""),
        If(txtTextbox3.Enabled, Column3.Text, ""))
End Sub

Private Function AddParams(param1 As String, param2 As String, param3 As String) As Task
    Return Task.Run(
    Sub()
        Using mysqlconn As New MySqlConnection("ServerConnection")
            mysqlconn.Open()
            Using mysqlCmd As New MySqlCommand("Insert into Table_Name (Column1,Column2,Column3) Values (@rec1,@Rec2,@Rec3)", mysqlconn)
                mysqlCmd.Parameters.AddWithValue("@Rec1", param1)
                mysqlCmd.Parameters.AddWithValue("@Rec2", param2)
                mysqlCmd.Parameters.AddWithValue("@Rec3", param3)
            End Using
        End Using
    End Sub)
End Function

Si je comprends votre conception actuelle,

Nom de la table

ID Colonne 1 Colonne 2 Colonne 3
1 abc Définition ghi
2 jkl mnon pqr
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal