none
Здравствуйте! Помогите, пожалуйста с работой в БД RRS feed

  • Вопрос

  • У меня есть combobox (источник данных выбран заранее, OleDB).

    Есть textbox. Когда нажимаю на элемент combobox, хочу, чтоб в textbox автоматически отобразился элемент следующего столбца текущей строки в БД Access. Как это реализовать?

    Примерно:

    в combobox название организации. Надо чтоб из БД в textbox подтянулся её расчётный счёт(он в текущей строке в БД внесён).

Ответы

  • Спасибо большое! Помощь больше не требуется. Разобрался с проблемой. Вот как решил сделать: в comboBox1 вручную ввёл элементы его. При изменении индекса в comboBox1 в его функции ввёл запрос и вывел его в textBox1. С интеграцией источника данных париться не стал. Всё оказалось чуть проще.

    Вот код:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.OleDb;
    
    
    namespace Serge_Kursach
    {
    
    
    
    
    
        public partial class Form1 : Form
        {
    
            public string connectionString;
            public string query;
            public OleDbConnection myOleDbConnection;
            public OleDbCommand myOleDbCommand;
            public Form1()
            {
                InitializeComponent();
                connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=dataBase_Serge.mdb";
                
                myOleDbConnection = new OleDbConnection(connectionString);
                myOleDbCommand = new OleDbCommand();
                myOleDbConnection.Open();
            }
    
            
    
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
    
    
    
                query = "SELECT [Номер счета] FROM Vnesh_org_Rasch_scheta WHERE [Имя Компании]= '" + comboBox1.Text + "' ";
                OleDbDataReader myRead;
                myOleDbCommand.Connection = myOleDbConnection;
                myOleDbCommand.CommandText = query;
    
                
                
                myRead = myOleDbCommand.ExecuteReader();
    
    
    
    
    
                try
                {
                    myRead.Read();
                    textBox1.Text = myRead["Номер счета"].ToString();
                }
                catch (Exception Ex)
                {
                    MessageBox.Show("Произошла ошибка. Что-то не то...", Ex.Message);
                }
    
                myRead.Close();
            }
        }
    }


Все ответы

  • Приведите больше информации. На каком языке пишете? Какую технологию доступа к БД используете? Какая технология создания GUI? Какие есть привязки (если есть)?
  • C#. Windows Forms.

    OleDB.  В ComboBox Выведены нужные элементы. Это я настроил. А вот как в TextBox вывести другие соответствующие данные -- не разобрался

    UPD:

    могу для наглядности ещё пару скриншотов дать

  • Как я понимаю, ORM не используется.

    Тогда, при изменении значения в комбобоксе (подписываемся на одно из событий Selected*Changed - какое удобней) создаём подключение к БД и передаём туда запрос с параметром изменённого значения. Результат выводим.

  • Ну база интегрирована в проект через "Источник данных" в самой VS. Через мастер.

    UPD:

    Попробовал, как вы сказали. Но почему-то он мне ошибку выписал.

  • Спасибо большое! Помощь больше не требуется. Разобрался с проблемой. Вот как решил сделать: в comboBox1 вручную ввёл элементы его. При изменении индекса в comboBox1 в его функции ввёл запрос и вывел его в textBox1. С интеграцией источника данных париться не стал. Всё оказалось чуть проще.

    Вот код:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.OleDb;
    
    
    namespace Serge_Kursach
    {
    
    
    
    
    
        public partial class Form1 : Form
        {
    
            public string connectionString;
            public string query;
            public OleDbConnection myOleDbConnection;
            public OleDbCommand myOleDbCommand;
            public Form1()
            {
                InitializeComponent();
                connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=dataBase_Serge.mdb";
                
                myOleDbConnection = new OleDbConnection(connectionString);
                myOleDbCommand = new OleDbCommand();
                myOleDbConnection.Open();
            }
    
            
    
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
    
    
    
                query = "SELECT [Номер счета] FROM Vnesh_org_Rasch_scheta WHERE [Имя Компании]= '" + comboBox1.Text + "' ";
                OleDbDataReader myRead;
                myOleDbCommand.Connection = myOleDbConnection;
                myOleDbCommand.CommandText = query;
    
                
                
                myRead = myOleDbCommand.ExecuteReader();
    
    
    
    
    
                try
                {
                    myRead.Read();
                    textBox1.Text = myRead["Номер счета"].ToString();
                }
                catch (Exception Ex)
                {
                    MessageBox.Show("Произошла ошибка. Что-то не то...", Ex.Message);
                }
    
                myRead.Close();
            }
        }
    }