Ich habe Formular, das textbox
für Produkt-ID hat, wenn Benutzer eine Produkt-ID eingeben Ich erhalte Details des Produkts (wie PRODUCT_DESC, UNIT_PRICE, usw.) von Orakel-Datenbank und dann füllen es in datagridview
Liste der gekauften Produkt zu erstellenLesen von Daten für Orakel-Leser zum Füllen von Datagridview
I-Datensatz zu laden versucht, aber das ist die alte Eintrag entfernen, wenn neue Produkt-ID hinzufügen
ich Schleife versucht, auf dataset
und Extraktwerte ich möchte, und fügen sie dann zu ihre Spalte in datagridview
die Schleife hier ist nutzlos, da es nur einen Datensatz gibt, aber die Daten nicht laden auf t er datagridview
bitte wie es geht ??
und gibt es einen besseren Weg, das zu tun?
private void SelectedProductData()
{
string connstr = @"Data Source=orcl; User Id=user; password=pwd;";
string cmdtxt = @"SELECT PRODUCT_ID,
PRODUCT_DESC,
UNIT_PRICE,
QUANTITY,
MEASUREMENT_UNIT,
MANUFACTORY
FROM WAREHOUSE
WHERE PRODUCT_ID = :P_Product_ID";
using (OracleConnection conn = new OracleConnection(connstr))
using (OracleCommand cmd = new OracleCommand(cmdtxt, conn))
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = cmdtxt;
cmd.Parameters.Add(new OracleParameter(":P_Product_ID", OracleDbType.Int32)).Value = TB_Product_ID.Text;
conn.Open();
OracleDataReader oraReader = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(oraReader);
while (oraReader.Read())
{
DGV_INVOICE.CurrentCell.Value = oraReader.GetString(0);
}
//foreach (DataRow dr in dt.Rows)
//{
// DGV_INVOICE.Rows[0].Cells[0].Value = dt.Rows[0]["PRODUCT_ID"].ToString();
//}
}
}
-Code-Update
private void TB_Product_ID_Leave(object sender, EventArgs e)
{
SelectedProductData();
}
Methode
private void SelectedProductData()
{
string connstr = @"Data Source=JDT; User Id=admin; password=admin;";
string cmdtxt = @"SELECT PRODUCT_ID,
PRODUCT_DESC,
UNIT_PRICE,
QUANTITY,
MEASUREMENT_UNIT,
MANUFACTORY
FROM WAREHOUSE
WHERE PRODUCT_ID = :P_Product_ID";
using (OracleConnection conn = new OracleConnection(connstr))
using (OracleCommand cmd = new OracleCommand(cmdtxt, conn))
{
conn.Open();
cmd.CommandType = CommandType.Text;
cmd.CommandText = cmdtxt;
cmd.Parameters.Add(new OracleParameter(":P_Product_ID", OracleDbType.Int32)).Value = TB_Product_ID.Text;
OracleDataReader oraReader = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(oraReader);
while (oraReader.Read())
{
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.Cells[0].Value = oraReader.GetValue(2);
//dgvRow.Cells[0].Value = oraReader.GetString(2);
//dgvRow.Cells[0].Value = oraReader.GetString(3);
//dgvRow.Cells[0].Value = oraReader.GetString(4);
DGV_INVOICE.Rows.Add(dgvRow);
}
MessageBox.Show("done");
}
}
@JohnG Ich habe die Datenquelle nicht auf DataGridView First gesetzt 1. weil ich Spalte manuell erstellt habe und ich Zeilen aus der Datenbank füllen und jeden Spaltenwert in die Spalte einfügen möchte ... weil zwischen diesen Spalten gibt es Berechnungsspalten, die gemäß den Daten berechnet werden, die ich aus der Datenbank wie der Gesamtpreis erhalte, werden gemäß dem Einheitspreiswert aus der Datenbank multipliziert mit der Einheitseinheit berechnet .... und so weiter. Sekunde 2. wenn ich lade der DataGridView, der den vorher eingegebenen Eintrag entfernt und den neuen Eintrag lädt ... sorry für mein schlechtes Englisch .Hoffe es ist jetzt klar – sam
@JohnG Ich habe ein Bild hochgeladen, um die Dinge klarer zu machen Ich werde die Daten nicht zweimal von neuem lesen Datenbank Ich lese Daten Ich möchte es in eine bestimmte Spalte in 'DataGridView' einfügen, die w krank Mittagessen ein Ereignis auf "DataGridView", die Spalte Gesamtpreis berechnen wird, wenn ich den Datensatz laden, wie ich suche und im Netz, die vorherige Datensatz löschen und den neuen Datensatz laden ... Beispiel Ich habe Produkt 1 mit Preis 1000 eingegeben und benannte test1, wenn ein Benutzer ein neues Produkt anfordert, das keinen anderen Datensatz in 'DataGridView' lädt, der einen neuen Datensatz in' DataGridView' lädt und alten löscht – sam
@JohnG Ja Das Bild zeigt, was der Benutzer sieht und das Bild aktualisiert, um die Gesamtpreisspalte und anzuzeigen Spalte 1.2.3 kommt aus der Datenbank nach Produkt-ID Benutzer geben Nummer 123 sind wo jeder sollte es laden sollte es nicht laden als zusätzliche Spalte am Ende der DataGridView Spalten, die ich gemacht habe, wenn ich den Datensatz wie 1 in laden Spalte 1 und 2 in Spalte 2 zu Ihrer Rechten nicht wie jetzt gezeigt ...Lesemarken sind, dass Spalte 1 multipliziert mit Spalte 2 minus Spalte 3 Daten in Spalte Gesamtpreis ergibt, die die Berechnungsspalte ist, sprach ich über – sam