Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
DefaultJunior
0 / 0 / 0
Регистрация: 08.05.2013
Сообщений: 4
1

чтение из БД Access 2007

08.05.2013, 06:28. Просмотров 1366. Ответов 3
Метки нет (Все метки)

Делаю простенькую кассу.
Есть таблица Pricelist, в которой 3 столбца: Код, Название, Цена.
В 1 listBox(nameBox) закинул названия, во 2ой(priceBox) - цены.
При клике в nameBox название попадает в листбокс zakaz.
как реализовать сумму? это нужно делать через DataSet?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace AccessTesting
{
    public partial class Form1 : Form
    {
        private double sum = 0;
        public Form1()
        {
           
            InitializeComponent();
        string sql = "SELECT * FROM Pricelist";
        string connectionString;
        connectionString = "Provider=Microsoft.Ace.OLEDB.12.0;" + "Data Source=D:\\c_sharp\\AccessTesting\\AccessTesting\\test.accdb";
        OleDbConnection connection = new OleDbConnection(connectionString);
        connection.Open();
        OleDbCommand command = new OleDbCommand(sql, connection);
        OleDbDataReader dataReader = command.ExecuteReader();
       
            while (dataReader.Read())
    {
        nameBox.Items.Add(dataReader[1]);
        priceBox.Items.Add(dataReader[2]);
    } 
            dataReader.Close();
            connection.Close();
}
 
        private void listBox1_Click(object sender, EventArgs e)
        {
            zakaz.Items.Add(nameBox.SelectedItem);
           // sum += 
        }
 
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2013, 06:28
Ответы с готовыми решениями:

Access 2007, datagridview, C#
Всем привет. Тем таких было много, но именно для себя подходящего не нашел....

Работа с Access 2007 (.accdb)
Есть программа, работающая с базой данных через dataset,datagridview...

Загрузка изображения из Access 2007-2010 в pictureBox
Подскажите, есть код который подгружает обычные данные (строки, числа) из базы....

Вложение Attach в Access 2007 accdb. Как его добавить в БД
Здравствуйте специалисты. пишу програмку на С# - надо в базу данных, кроме...

Чтение RTF из Access
Возник вопрос. Возможно ли из поля MEMO с форматом текста rtf вывести текст в...

3
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,490
08.05.2013, 10:53 2
1. Добавьте в таблицу столбец-ключ-автоинкримент Id
2. можно использовать DataSet, а можно просто DataTable:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 //поля класса
DataTable Goods;
DataTable Zakaz;
BindingSource bs;
 
//.....
 
OleDbConnection connection = new OleDbConnection(connectionString);
OleDbCommand command = new OleDbCommand(sql, connection);
OleDbAdapter adapter = new OleDbAdapter();
adapter.SelectComand = command;
Goods= new DataTable();
adapter.Fill(Goods);
GoodsBox.DisplayMember = "Name"; //название столбца с именем товара как в БД
GoodsBox.ValueMember = "Id";
GoodsBox.DataSource = Goods;
Zakaz = new DataTable();
foreach(DataColumn col in Goods.Columns)
{
Zakaz.Columns.Add(new DataColumn(col.ColumnName, col.DataType));
}
Zakaz.Columns.Add(new DataColumn("Qty", typeof(int)));
Zakaz.Columns.Add(new DataColumn("FullPrice", typeof(double), "Price*Qty")); //Price - имя столбца цены в БД
bs = new BindingSource(Zakaz, "");
dataGridView.DataSource = bs;
3. Добавляем текстбокс в который можно писать только цифры (мсдн и текстбокс стоимость заказа и кнопку добавить:
C#
1
2
3
4
5
6
7
8
9
10
11
private void buttonAdd_Click(object sender, EventArgs e)
{
DataRow row = Zakaz.NewRow();
row["Id"] = Goods.SelectedValue;
row["Name"] = Goods.SelectedText;
row["Price"] = (Goods.SelectedItem as DataRowView).Row["Price"];
row["Qty"] = Convert.ToInt32(textBoxQty.Text);
Zakaz.Rows.Add(row);
textBoxZakazSumm.Text = Zakaz.AsEnumarable().Sum(s=>s.Field<double>("FullPrice")).ToString("f");
bs.ResetBindings(false);
}
4. Кнопка сохранить, которая сохраняет иформацию о заказе в БД(время, заказчик прочие данные) в таблицу заказ (с полем-ключом-автоинкриментом) и список товаров: ключ заказа(одинаковый для всех товаров заказа), ключи товаров и их кол-во (почитайте про адаптер).
Полную информацию о заказе можно будет получить перекресным запросом.
1
DefaultJunior
0 / 0 / 0
Регистрация: 08.05.2013
Сообщений: 4
13.05.2013, 02:18  [ТС] 3
1)"Код" разве не ключ-автоинкримент?
2) для чего нужен адаптер? чтобы автоматически формировалась и заполнялась DataTable?

Цитата Сообщение от Learx Посмотреть сообщение
GoodsBox.DisplayMember = "Name";
GoodsBox.ValueMember = "Id";
эти две строчки что делают?
0
DefaultJunior
0 / 0 / 0
Регистрация: 08.05.2013
Сообщений: 4
14.05.2013, 04:39  [ТС] 4
Цитата Сообщение от Learx Посмотреть сообщение
row["Id"] = Goods.SelectedValue;
row["Name"] = Goods.SelectedText;
row["Price"] = (Goods.SelectedItem as DataRowView).Row["Price"];
SelectedValue, SelectedText, SelectedItem не хотят работать
/* ошибка CS1061: "System.Data.DataTable" не содержит определения для "SelectedValue" и не был найден метод расширения "SelectedValue", принимающий тип "System.Data.DataTable" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) */
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2013, 04:39

Подключение к Access 2007 и ошибка "Недопустимое имя файла"
Здравствуйте .. Впервые подключаюсь из C# в ACCESS 2007 и возникает ошибка: ...

Чтение из базы данных Access
Здравствуйте!Это моя первая программа с использованием базы данных! Делаю...

Чтение и запись в базы данных Access
Я недавно начал учиться программированию на C#. Перечитал множество статей про...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru