John Nuñez
John Nuñez

Reputation: 1830

Populate Datagridview from DB VB.NET

I have my mysql query selected fields (item_code, item_name, item quantity, item_selltype, item_selldetail) but some of these fields are variants.

Dim sqlConn As String = ("SELECT item_code, item_name, item_quantity, item_selltype, item_selldetail FROM qa_items")
Dim objDataAdapter As New MySqlDataAdapter(sqlConn, objConn)

I suppose that the query returns:

item_code, item_name, item_quantity, item_selltype, item_selldetail
01         Ball       5              unit           10.52
02         Keyoard    10             unit           50.00
03         Gasoline   5              gallon         70.45

DataGridView control looks so:

Code, Name, Inv, Unit Price, Box Price, Pound Price, Gallon Price

then I need this result in datagridview:

Code, Name,    Inv, Unit Price, Box Price, Pound Price, Gallon Price
01    Ball     5    10.52       0          0            0
02    Keyboard 10   50.00       0          0            0
03    Gasoline 5    0           0          0            70.45

I searched in many ways some code that can do this but I can not succeed, help..

Upvotes: 1

Views: 766

Answers (1)

Chuck Wilbur
Chuck Wilbur

Reputation: 2620

I think you need a translator object. Get your data from the database, and use it to populate a List<> of something like this:

class Item
{
    public int Code { get; private set; }
    public string Name { get; private set; }
    public int Inv { get; private set; }
    [DisplayName("Unit Price")]
    public double UnitPrice { get; private set; }
    [DisplayName("Box Price")]
    public double BoxPrice { get; private set; }
    [DisplayName("Pound Price")]
    public double PoundPrice { get; private set; }
    [DisplayName("Gallon Price")]
    public double GallonPrice { get; private set; }

    public Item(int item_code, string item_name, int item_quantity, string item_selltype, double item_selldetail)
    {
        Code = item_code;
        Name = item_name;
        Inv = item_quantity;
        UnitPrice = 0;
        BoxPrice = 0;
        PoundPrice = 0;
        GallonPrice = 0;
        switch (item_selltype)
        {
            case "unit": UnitPrice = item_selldetail; break;
            case "box": BoxPrice = item_selldetail; break;
            case "pound": PoundPrice = item_selldetail; break;
            case "gallon": GallonPrice = item_selldetail; break;
            default: throw new InvalidExpressionException();
        }
    }
}

Then set the DataSource of the grid to that List<Item>.

Upvotes: 1

Related Questions