Witam z góry przepraszam za nazwę tematu ale nie wiedziałem jak to nazwać... piszę mały programik w połączeniu z bazą SQL i mam pewien problem. Może od początku... posiadam tabele w której do nazwy mam przypisane ceny i teraz chce aby po wybraniu z comboboxa nazwy i wpisaniu w drugiego textboxa wartości wyliczało mi wartość końcową do kolejnego textboxa.... nie wiem czy to dobrze opisałem. Mam nadzieje że ktoś mi pomoże :D
No i dokładnie jaki masz problem z tym połączeniem? Jaka jest treść błędu?
Na razie jestem na etapie uzupełniania tych danych z ręki do textboxów i wybierania z listy i nie mam pojęcia jak to zamienić żeby robiło mi się z automatu.
Z tego co ja zrozumiałem to chcesz wybierać z listy jakiś np. produkt, następnie wpisać ręcznie ilość, i pokazać w kolejnym miejscu wyliczoną wartość.
Czyli np.: wybierasz "chleb", podajesz 10 jako ilość, cena w bazie danych to 10 zł czyli suma = 10* 10 = 100 zł.
Zgadza się?
Z czym masz KONKRETNIE problem?
Prześlij kod który już masz.
Dokładnie o to mi chodzi :D na razie mam to napisane tak bardzo łopatologicznie więc wybacz :)
private void btnDodZamDodaj_Click(object sender, EventArgs e)
{
if (!edycja)
{
int id_gat = (from x in baza.podzial_tuszy_miesas
where x.nazwa == cbGatunek.Text.ToString()
select x.id_gatunek).FirstOrDefault();
int prac = (from p in baza.pracowniks
where p.nazwisko == cbPracownik.Text.ToString()
select p.id_pracownik).FirstOrDefault();
int fir = (from f in baza.firmas
where f.nazwa_firmy == cbFirma.Text.ToString()
select f.id_firmy).FirstOrDefault();
zamowienie zam = new zamowienie
{
id_partia = 1,
id_zamowienie = id + 1,
gatunek = id_gat,
ilosc = Convert.ToInt32(txtIlosc.Text),
data_zamówienia = DateDateTimePickerDZam.Value,
data_realizacji = DateDateTimePickerDZam.Value,
pracownik = prac,
firma = fir,
wartość = Convert.ToInt32(txtWartosc.Text),
realizacja = real
};
baza.zamowienies.InsertOnSubmit(zam);
baza.SubmitChanges();
MessageBox.Show("Dane zostały wprowadzone.");
this.Close();
}
else
{
zamowienie query = (from x in baza.zamowienies
where x.id_zamowienie == id
select x).FirstOrDefault();
int idgat = (from x in baza.podzial_tuszy_miesas
where x.nazwa == cbGatunek.Text.ToString()
select x.id_gatunek).FirstOrDefault();
int idprac = (from x in baza.pracowniks
where x.nazwisko == cbPracownik.Text.ToString()
select x.id_pracownik).FirstOrDefault();
int idfirm = (from x in baza.firmas
where x.nazwa_firmy == cbFirma.Text.ToString()
select x.id_firmy).FirstOrDefault();
zamowienie z = query;
z.gatunek = idgat;
z.ilosc = Convert.ToDecimal(txtIlosc.Text);
z.data_zamówienia = DateDateTimePickerDZam.Value;
z.data_realizacji = DateDateTimePickerDZam.Value;
z.pracownik = idprac;
z.firma = idfirm;
z.wartość = Convert.ToDecimal(txtWartosc.Text);
z.realizacja = real;
baza.SubmitChanges();
MessageBox.Show("Dane zostały edytowane.");
this.Close();
}
}
Bo tu jest z edycją już :)
Bindujesz tego ComboBoxa z wybraną tabelą w bazie. Ustawiasz w comboboxie Value Member
na kolumne Cena.
Później w evencie pobierasz combobox1.SelectedValue
i masz cenę wybranego itemu.
Nie próbowałem ogarnąć co robisz w podanym kodzie.
Dobra postaram się ogarnąć :)
No tak to proste, wykorzystaj zdarzenia (onchange) związane ze zmianą zawartości pola wagi,ilości i pola kombo (ceny).
Szybki przykład :
Zdarzenie zmiany dla combobox trzeba włączyc po zbindowaniu comboboxa danymi z bazy.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace wfa_test {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void tbxPrice_TextChanged(object sender, EventArgs e) {
calculate();
}
private void calculate() {
double value = 0.0D;
if (tbxValue.Text != "")
value = Convert.ToDouble(tbxValue.Text);
var ditem = comboBox1.SelectedItem;
double price = (ditem as Datas).priceValue;
label1.Text = string.Format("{0}", price * value);
}
private void Form1_Load(object sender, EventArgs e) {
fillComboBox();
}
private void fillComboBox() {
comboBox1.BeginUpdate();
comboBox1.Items.Clear();
comboBox1.Items.Add(new Datas { itemName = "Wybierz produkt", priceValue = 0.00D });
comboBox1.Items.Add(new Datas { itemName = "Ogórki", priceValue = 2.99D });
comboBox1.Items.Add(new Datas { itemName = "Kalafiory", priceValue = 3.99D });
comboBox1.Items.Add(new Datas { itemName = "Kapusta", priceValue = 1.99D });
comboBox1.DisplayMember = "itemName";
comboBox1.ValueMember = "priceValue";
comboBox1.SelectedIndex = 0;
comboBox1.SelectedValueChanged += new System.EventHandler(comboBox1_SelectedValueChanged);
comboBox1.EndUpdate();
}
private void comboBox1_SelectedValueChanged(object sender, EventArgs e) {
calculate();
}
}
public class Datas {
public string itemName { get; set; }
public double priceValue { get; set; }
}
}