Форум программистов, компьютерный форум, киберфорум
Наши страницы

C#: WPF, UWP и Silverlight

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Olga_O
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 6
#1

Как вывести в TextBox информацию из базы по дате, выбранной на календаре - C# WPF

28.03.2012, 23:43. Просмотров 1516. Ответов 6
Метки нет (Все метки)

Привет!
Задание такое:
подключиться к MS SQL server, в котором есть таблица курсов валют :
Поля-
Дата,
Евро,
Доллар

и при выборе в DatePicker даты, при нажатии кнопки в текстбоксах должны появляться курсы...
не получается...
Спасибо огромное за любые ответы!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2012, 23:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как вывести в TextBox информацию из базы по дате, выбранной на календаре (C# WPF):

Как вывести в DBGrid информацию из двух таблиц по выбранной строке в третьей - Delphi БД
Здравствуйте. У меня такая ситуация: Есть таблица "Данные" - ключ, фио, ... По выбранной строке (при нажатии RadioButton) из нее в...

Вывести месяц по выбранной в ComboBox дате - Visual C++
Пусть задано выпадающий список (Ком Бокс) в котором записаны времени года в зависимости от выбора времени года ввести на экран ее месяца....

По заданной дате вывести информацию о том, високосный ли год в этой дате, а также название месяца и количество дней в нем. - C++
Ребят, помогите пожалуйста, я только начала проходить программирование и еще не совсем разбираюсь По заданной дате вывести информацию о...

Как в зависимости от выбранной в ComboBox цифры вывести в TextBox один из вариантов, предложенных в кейсе - VBA
Здравствуйте! Подскажите, плз, как в зависимости от выбранной в комбобоксе цифры выводился в текстбоксе один из вариантов,...

Как вывести в DBGrid информацию только по выбранной строке в другой таблице DBGrid? - Delphi БД
У меня есть 3 таблицы - Компании, Адреса и Квартиры. Компании содержит поля - Код компании и название Адреса содержит поля - Код...

Как по дате в календаре найти нужную запись в Базе данных - MS Access
Помогите, пожалуйста! Есть форма в которой установлен объект Календарь. Необходимо по клику по дню календаря найти соответствующую запись в...

6
SmirnoFF.Oleg
63 / 61 / 4
Регистрация: 13.12.2011
Сообщений: 274
29.03.2012, 00:00 #2
Подключаемся к БД:
C#
1
2
3
4
5
6
...
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
...
string zakconnstr = "Data Source=адрес сервера;Initial Catalog=каталог;Database=имя базы данных;User Id=логин;Password=пароль;";
Заполняем таблицу результатам запроса:
C#
1
2
3
DataTable dt = new DataTable();
var da = new SqlDataAdapter("SELECT евро, доллар FROM таблицы WHERE дата = '" + DatePicker1.Text + "'", zakconnstr);
da.Fill(dt);
Далее заполняем textbox'ы:
C#
1
2
3
4
5
if(dt.Rows.Count > 0)
{
textbox1.text = dt.Rows[0]["евро"].ToString();
textbox2.text = dt.Rows[0]["доллар"].ToString();
}
За синтаксисом не следил. Писал прям тут.
1
Olga_O
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 6
29.03.2012, 23:03  [ТС] #3
Спасибо!
У меня пока такой код.... не работает

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Data.Sql;
 
using System.Collections.ObjectModel;
 
 
using Connect;
 
 
 
namespace WpfApplication2
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    /// 
    public class Money
    {
        public SqlMoney EURO { get; set; }
        public SqlMoney USD { get; set; }
    }
 
    public partial class MainWindow : Window
    {
 
        String SQL;
 
        
        public MainWindow()
        {
           
            InitializeComponent();
            UpdateDB(DateTime.Today.ToString("dd.MM.yyyy"));
        }
 
 
 
 
 
        public void UpdateDB(String day)
        {
            SqlConnection con = new SqlConnection(Connect.Connect.ConnectionStr("dbInsuranceReserve"));
 
 
            SQL = "SELECT * FROM SCalendar WHERE Calendar = '" + day + "'";
            i_label.Content = SQL;
 
 
 
 
            DataTable dt = new DataTable();
            SqlDataAdapter dataadapter = new SqlDataAdapter(SQL, con);
            SqlCommandBuilder cb = new SqlCommandBuilder(dataadapter);
            dataadapter.UpdateCommand = cb.GetUpdateCommand();
            dataadapter.Fill(dt);
 
 
 
            if (con.State.ToString() != "Open") { con.Open(); USD.Text = "ЛОЛгш"; }
            else { EURO.Text = "kiui"; }
 
            ObservableCollection<Money> OO = new ObservableCollection<Money>();
            try
            {
                foreach (DataRow row in dt.Rows)
                {
                    try //Если есть ошибка в базе
                    {
                        Money H = new Money();
 
                       
 
                        H.EURO = Convert.ToString(row["EURO"]) == "" ? -1 : (SqlMoney)row["EURO"];
                        H.USD = Convert.ToString(row["USD"]) == "" ? -1 : (SqlMoney)row["USD"];
                        OO.Add(H);
 
                    }
                    catch
                    {
                        MessageBox.Show("Ошибка");
                    }
                }
 
                foreach (Money m in OO)
                {
 
                 
                    USD.Text = Convert.ToString(m.USD);
 
                    EURO.Text = Convert.ToString(m.EURO);
           
                }
            }
 
 
            catch (IndexOutOfRangeException e)
            {
                MessageBox.Show(string.Format("Ошибка!\n\n{0}", e.Message), e.Source);
            }
            catch (SqlException e)
            {
                MessageBox.Show(string.Format("Ошибка!\n\n{0}", e.Message), e.Source);
            }
            finally
            {
                con.Close();
            }
 
 
        }
       
 
 
 
        private void i_button_GO_Click(object sender, RoutedEventArgs e)
        {
            UpdateDB(i_datePicker.Text);
        }
 
        private void i_datePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
 
        }
    }
}
Добавлено через 33 секунды
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Data.Sql;
 
 
 
 
namespace Connect
{
    class Connect
    {
        private static string ConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog={0};Integrated Security=SSPI";
       
 
        public static string ConnectionStr(string Catalog)
        {
            return string.Format(ConnectionString, Catalog);
        }
 
    }
}
0
SmirnoFF.Oleg
63 / 61 / 4
Регистрация: 13.12.2011
Сообщений: 274
29.03.2012, 23:30 #4
Что конкретно не работает ? На какой строке?
0
Olga_O
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 6
29.03.2012, 23:47  [ТС] #5
H.EURO = Convert.ToString(row["EURO"]) == "" ? -1 : (SqlMoney)row["EURO"];
H.USD = Convert.ToString(row["USD"]) == "" ? -1 : (SqlMoney)row["USD"];

выскакивает сообщение из catch...
вот такая таблица, что-то с типами, не знаю как с этим работать( уже в базе и дата varchar

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
USE dbInsuranceReserve--использование
GO
DROP TABLE SCalendar--Курсы_Валют для поиска в текстбокс
GO
 
CREATE TABLE SCalendar--Курсы_Валют
(
 
Calendar VARCHAR(100) NOT NULL,
USD MONEY NOT NULL,
EURO MONEY NOT NULL
 
 
 
);
GO
 
ALTER TABLE SCalendar--Курсы_Валют
ADD 
CONSTRAINT PKCalendar PRIMARY KEY (Calendar);
GO
0
SmirnoFF.Oleg
63 / 61 / 4
Регистрация: 13.12.2011
Сообщений: 274
30.03.2012, 23:19 #6
Попробуйте так:
C#
1
2
3
4
5
6
7
for(int i = 0; i < dt.Rows.Count; i++)
{
Money H = new Money();
H.EURO = dt.Rows[i]["EURO"].ToString();
H.USD = dt.Rows[i]["USD"].ToString();
OO.Add(H);
}
Ведь вы сделали:
C#
1
dataadapter.Fill(dt);
Не понимаю зачем Вам такие сложности как:
C#
1
ObservableCollection<Money> OO = new ObservableCollection<Money>();
0
Olga_O
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 6
31.03.2012, 01:54  [ТС] #7
спасибо!!! просто только начинаю изучать, был пример с коллекцией, захотелось попробовать)

Добавлено через 3 минуты
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 public void UpdateDB(String day)
        {
            SqlConnection con = new SqlConnection(Database.Database.ConnectionStr("dbInsuranceReserve"));
 
            SQL = "SELECT * FROM SCalendarVFormy WHERE CalendarVF = '" + day + "'";
           
            DataTable dt = new DataTable();
            SqlDataAdapter dataadapter = new SqlDataAdapter(SQL, con);
            SqlCommandBuilder cb = new SqlCommandBuilder(dataadapter);
            dataadapter.Fill(dt);
 
            if (con.State.ToString() != "Open") { con.Open(); }
 
            ObservableCollection<Money> OO = new ObservableCollection<Money>();
            try
            {
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow row in dt.Rows)
                    {
                        try //Если есть ошибка в базе
                        {
                            Money H = new Money();
                            H.EURO = Convert.ToString(row["EURO"]);
                            H.USD = Convert.ToString(row["USD"]);
                            OO.Add(H);
                        }
                        catch
                        {
                            MessageBox.Show("Извините, ошибка!", "Информационное сообщение");
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Извините, курса на эту дату еще нет в базе!", "Информационное сообщение");
                }
 
                foreach (Money m in OO)
                {
                    USD.Text = Convert.ToString(m.USD);
                    EURO.Text = Convert.ToString(m.EURO);
 
                }
            }
            catch (IndexOutOfRangeException e)
            {
                MessageBox.Show(string.Format("Ошибка!\n\n{0}", e.Message), e.Source);
            }
            catch (SqlException e)
            {
                MessageBox.Show(string.Format("Ошибка!\n\n{0}", e.Message), e.Source);
            }
            finally
            {
                con.Close();
            }
        }
Добавлено через 1 минуту
сейчас все работает, с типами были ошибки)
0
31.03.2012, 01:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2012, 01:54
Привет! Вот еще темы с ответами:

Как вывести числовой массив из базы в textbox? - C#
Есть колонка &quot;фото&quot; - она числовая(1,2,3,4 и т.д) Я подключаю колонку &quot;фото&quot; к textbox (хотел чтоб эти надписи 1,2,3,4 и т.д выводились в...

Извлечь из базы (mysql) информацию и поместить ей в Textbox - Visual Basic .NET
Объясните, как можно извлечь из базы (mysql) некую информацию и поместить ей в Textbox ? Если можно с примерами.

Как сделать выборку данных из datagridView по выбранной дате datetimepicker? - C#
Добрый день уважаемый программисты. Может быть кто-то знает как сделать выборку данных из datagrid по выбранной дате datetimepicker?. В...

MySQL Нужно вывести информацию относящуюся к определённой дате - PHP БД
Нужно вывести информацию относящуюся к определённой дате, но так как даты повторяются,есть колонка number. Но как сопоставить их...


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

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

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