Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2017, 20:18   #1
SaintsNikolay
 
Аватар для SaintsNikolay
 
Регистрация: 14.10.2017
Сообщений: 9
Сообщение Поставщик "Microsoft.Jet.OLEDB.4.0" не зарегистрирован на локальном компьютере

Приветствую уважаемых опытных программистов. У меня не большая просьба. В общем учу по C# создание приложений с базы данных Access, нашел учебник по которому и проходит мое обучение. Есть и программки. Дак вот, при запуске программы, он почему то жалуется. Не могу понять почему. Помогите пожалуйста до конца разобраться с кодом.
Состоит ошибка в следующем:
System.InvalidOperationException: "Поставщик "Microsoft.Jet.OLEDB.4.0" не зарегистрирован на локальном компьютере."
Строка ошибки: oleDbDataAdapter1.Fill(dataSet1.Tab les[0]);
Сам код программы:
// не поймите превратно, что пытаюсь просто сделать мне код. Просто на подобие этой программы мне нужно делать свою. Но такая ошибка часто возникает в программах. Прошу совета.
Программа работы с базой данных Microsoft Acces "Контакты" (contacts.mdb)
Предполагается, что файлы иллюстраций находятся в папке Images,
которая находится в той же папке, что и файл БД.
Путь к файлу БД загружается из файла параметров.

Код:
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.IO; // для доступа к DirectoryInfo

using WindowsFormsApplication1.Properties; // для доступа к объекту Settings

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        string dbPath;   // папка приложение
        string imFolder; // папка иллюстраций
        
        // начало работы программы
        private void Form1_Load(object sender, EventArgs e)
        {
            // загрузить путь к файлу БД  из файла конфигурации
            dbPath = Settings.Default.DbPath;
            
            // открыть соединение с БД
            oleDbConnection1.ConnectionString =
                "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
                dbPath + "\\Contacts.mdb";

            // папка иллюстраций
            imFolder =  dbPath + "\\Images\\";

            // получить информацию из БД
            oleDbDataAdapter1.Fill(dataSet1.Tables[0]);
        }

        // пользователь нажал клавишу <Delete>
        private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            DialogResult r;
            
            r= MessageBox.Show("Вы действительно хотите удалить запись?", "Удаление записи",
                                MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2);

            if (r == DialogResult.Cancel)
            {
                // отменить операцию удаления записи
                e.Cancel = true;
            }
        }

        // изменилось содержимое поля textBox4 - 
        // отобразить иллюстрацию, имя файла которой
        // находится в этом поле
        private void textBox4_TextChanged(object sender, EventArgs e)
        {
            string imageFile;
            string msg; // текст, отображаемый в поле компонента pictureBox

            if (textBox4.Text.Length == 0)
            {
                imageFile = imFolder + "nobody.jpg";
            }
            else
                imageFile = imFolder + textBox4.Text;

            try
            {
                msg = "";
                pictureBox1.Image = System.Drawing.Bitmap.FromFile(imageFile);
            }
            catch (System.IO.FileNotFoundException)
            {
                // вывести сообщение об ошибке в поле
                // компонента pictureBox1
                msg = "File nof found: " + imageFile;
                pictureBox1.Image = null;
                pictureBox1.Refresh();
            }
      }

        // щелчок в поле отображения иллюстрации
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            openFileDialog1.Title = "Выберите иллюстрацию";
            openFileDialog1.InitialDirectory = imFolder;
            openFileDialog1.Filter = "фото|*.jpg|все файлы|*.*";
            openFileDialog1.FileName = "";
            
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                // пользователь указал файл иллюстрации
                
                // проверим, находится ли выбранный файл
                // в каталоге imFolder
                bool r = openFileDialog1.FileName.ToLower().Contains(
                                openFileDialog1.InitialDirectory.ToLower());
                if (r == true)
                {
                    // копировать не надо т.к. пользователь
                    // указал иллюстрацию, которая
                    // находится в imFolder
                    textBox4.Text = openFileDialog1.SafeFileName;
                }

                else
                {
                    // скопировать файл иллюстрации в папку Images

                    // если в каталоге-приемнике есть файл с таким же
                    // именем, что и копируемый, возникает исключение
                    try
                    {
                        // копировать файл
                        System.IO.File.Copy(openFileDialog1.FileName,
                                            imFolder + openFileDialog1.SafeFileName);

                        textBox4.Text = openFileDialog1.SafeFileName;
                    }
                    catch (Exception ex)
                    {
                        DialogResult dr;
                        dr = MessageBox.Show(ex.Message + " Заменить его?", "",
                                MessageBoxButtons.OKCancel, MessageBoxIcon.Warning,
                                MessageBoxDefaultButton.Button2);
                        if (dr == DialogResult.OK)
                        {
                            // перезаписать файл - значение параметра overwrite = true
                            System.IO.File.Copy(openFileDialog1.FileName,
                                            imFolder + openFileDialog1.SafeFileName, true);
                            textBox4.Text = openFileDialog1.SafeFileName;
                        }
                    }
                }
            }
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            //Rectangle aRect = new Rectangle(1, 1, pictureBox1.Width, pictureBox1.Height);
        }

        // завершение работы программы  
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            try
            {
                oleDbDataAdapter1.Update(dataTable1);
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.ToString());
            }
        }
    }
}
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 19.10.2017 в 20:21.
SaintsNikolay вне форума Ответить с цитированием
Старый 19.10.2017, 20:24   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от SaintsNikolay Посмотреть сообщение
"Поставщик "Microsoft.Jet.OLEDB.4.0" не зарегистрирован на локальном компьютере."
Ну видимо его и правда нет.
Может быть другой нужен, там разный для х64 и х86 ОС и т.п.

http://www.programmersforum.ru/showthread.php?t=298211
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.10.2017, 20:26   #3
SaintsNikolay
 
Аватар для SaintsNikolay
 
Регистрация: 14.10.2017
Сообщений: 9
По умолчанию

А это что такое? библиотека? может как то обойдись, или загрузить?
SaintsNikolay вне форума Ответить с цитированием
Старый 19.10.2017, 20:30   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да, что-то типа библиотеки. Драйвер для ADO.NET.
В общем то, что между ADO.NET и самой БД.

Смотрите варианты по ссылке выше, обычно просто надо заменить его имя в зависимости от х64/х86 ОС. Ну и Офис должен стоять.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.10.2017, 20:46   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Офис не обязательно. Что Jet.OLEDB.4.0, что ACE.OLEDB.12.0 не зависят от его наличия/отсутствия и могут устанавливаться автономно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.10.2017, 13:39   #6
SaintsNikolay
 
Аватар для SaintsNikolay
 
Регистрация: 14.10.2017
Сообщений: 9
По умолчанию

В общем я библиотеки добавлял. Не помогло решить проблему. Единственно можно было бы проверить на очень старом компьютере, но к сожалению такой возможности нет. Я так понял из информации в интернете, библиотеки эти очень старые и уже вышли из "употребления".
SaintsNikolay вне форума Ответить с цитированием
Старый 20.10.2017, 13:45   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Добавляли что? Сообщения выше и тему по ссылке не читали?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.10.2017, 13:55   #8
SaintsNikolay
 
Аватар для SaintsNikolay
 
Регистрация: 14.10.2017
Сообщений: 9
По умолчанию

Читал. Но там же другая ситуация.
SaintsNikolay вне форума Ответить с цитированием
Старый 20.10.2017, 13:58   #9
SaintsNikolay
 
Аватар для SaintsNikolay
 
Регистрация: 14.10.2017
Сообщений: 9
По умолчанию

Ставить винду 7, как то лень) попробую проще, переделать по новому)
SaintsNikolay вне форума Ответить с цитированием
Старый 20.10.2017, 14:55   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не другая, значит не читали.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поставщик "Microsoft.ACE.OLEDB.12.0" не зарегистрирован на локальном компьютере andryshka63 C# (си шарп) 4 10.04.2015 12:09
Firebird на локальном компьютере Georgios Помощь студентам 8 30.01.2010 13:34
Загрузка XLS без драйвера Mirosoft.Jet.OLEDB.4.0 Cawboy SQL, базы данных 1 22.07.2009 20:58
Простые БД на локальном компьютере unicode БД в Delphi 6 10.07.2009 03:14
ASP на локальном компьютере N!ckeL PHP 1 05.07.2008 19:38