174 / 73 / 30
Регистрация: 20.11.2013
Сообщений: 358
1

Работа с dbf в C# - вывести содержимое dbf в dataGridView

20.11.2013, 13:26. Показов 33718. Ответов 13
Метки нет (Все метки)

Необходимо вывести содержимое dbf в dataGridView, подскажите как сделать....


Заранее спасибо....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2013, 13:26
Ответы с готовыми решениями:

Прочитать содержимое dbf (файл SER.Dbf). И вывести содержимое нескольких полей
Всем привет) Можете пожалуйста помочь, может кто хорошо разбирается в работе с dbf файлами......

Ошибка при загрузке DBF файлов с датой 'dd.mm.yy' (DBF FoxPro, TADOQvery, DataSource, DBGrid)
Возьмем для примера текущую дату - '04.09.2003'. В результате выполнения этого запроса данные...

Копирование данных из одной таблицы dbf в шаблон dbf
Есть источник файл med.dbf с данными, необходимо перенести часть данных в файл-шаблон med.dbf....

Конвертирование файлов DBF III в DBF IV
Существует некая форма, которая подключается к dbf файлам и берет из них данные. строка...

13
8 / 8 / 1
Регистрация: 20.01.2012
Сообщений: 196
21.11.2013, 07:54 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string FilePath= "C:\\Users\\Administrator\\Desktop\\";
       string DBF_FileName = "SCTFIN.dbf";
       OdbcConnection obdcconn = new System.Data.Odbc.OdbcConnection();       
       obdcconn.ConnectionString = "Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=" + FilePath+ ";Exclusive=No; NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";
       obdcconn.Open();
       OdbcCommand oCmd = obdcconn.CreateCommand();
       oCmd.CommandText = "SELECT * FROM " + FilePath + DBF_FileName;
 
         /*Load data to table*/
 
       DataTable dt1 = new DataTable();
       dt1.Load(oCmd.ExecuteReader());
       obdcconn.Close();
 
         /*Bind data to grid*/
 
       gv1.DataSource = dt1;
       gv1.DataBind();
1
44 / 44 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
21.11.2013, 09:19 3
Создай класс для чтения dbf файла.

Добавлено через 1 минуту
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
class WDBF
    {
        private OdbcConnection _connection = null;
        public DataTable Execute(string command)
        {
            DataTable dt = null;
            if (_connection != null)
            {
                try
                {
                    _connection.Open();
                    dt = new DataTable();
                    System.Data.Odbc.OdbcCommand oCmd = _connection.CreateCommand();
                    oCmd.CommandText = command;
                    dt.Load(oCmd.ExecuteReader());
                    _connection.Close();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
            return dt;
        }
        public DataTable GetAll(string dbpath)
        {
            return Execute("SELECT * FROM " + dbpath);
        }
 
        public WorkDBF()
        {
            this._connection = new System.Data.Odbc.OdbcConnection();
            _connection.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};" +
                "SourceType=DBF;Exclusive=No;" +
                "Collate=Machine;NULL=NO;DELETED=NO;" +
                "BACKGROUNDFETCH=NO;";
        }
    }
}
0
174 / 73 / 30
Регистрация: 20.11.2013
Сообщений: 358
21.11.2013, 15:08  [ТС] 4
Спасибо!
А как через Provider=Microsoft.Jet.OLEDB.4.0 объявить???
0
44 / 44 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
21.11.2013, 16:29 5
using System.Data.Odbc

Через Odbc.

Добавлено через 2 минуты
Ну и потом вызываешь экземпляр класса и т.д.

Добавлено через 35 секунд
C#
1
2
3
WorkDBF WDBF = new WorkDBF();
            var dt = WDBF.GetAll("C:\\Users\\******\\Documents\\BNKSEEK.DBF");
            dataGridView1.DataSource = dt;
0
174 / 73 / 30
Регистрация: 20.11.2013
Сообщений: 358
22.11.2013, 08:27  [ТС] 6
Цитата Сообщение от m@cChe Посмотреть сообщение
using System.Data.Odbc
Через Odbc.
А обязательно через Odbc? Через OleDb не получится?
И если не сложно объясните существенную разницу между ними.....
0
44 / 44 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
22.11.2013, 09:01 7
ODBC для доступа к данным SQL, а OLE DB — для доступа к любым данным в среде СОМ.
Проштудируй статейку.
http://www.osp.ru/win2000/2000/01/174144/
Для OLE DB используй IBProvider.
http://http://www.ibprovider.com/rus/
0
174 / 73 / 30
Регистрация: 20.11.2013
Сообщений: 358
22.11.2013, 10:59  [ТС] 8
Спасибо, интересная статейка.....
0
44 / 44 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
22.11.2013, 11:06 9
Не за что.
0
174 / 73 / 30
Регистрация: 20.11.2013
Сообщений: 358
22.11.2013, 11:20  [ТС] 10
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
            
            OleDbConnection conn;
            OleDbDataAdapter oledbAdapter;
            DataSet ds;
            OleDbCommand cmd;
            ds = new DataSet();
            string connetionString = null;
            connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + putFileName + "; Extended Properties=dBASE IV;";
            conn = new OleDbConnection(connetionString);
            try
            {
                conn.Open();
                toolStripStatusLabel2.Text = "Open File:" + strFileName;
            }
            catch (Exception ex)
            {
                toolStripStatusLabel2.Text = "Can not open connection ! " + ex;
            }
            string Sql = "select * from " + strFileName;
            oledbAdapter = new OleDbDataAdapter(Sql, conn);
            oledbAdapter.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];
Написал так все замечательно работает....
Ошибка была в том, что в Data Source указывал путь с именем конкретного файла, а нужно указывать директорию.....
1
1249 / 957 / 134
Регистрация: 01.10.2009
Сообщений: 2,976
Записей в блоге: 1
22.11.2013, 14:17 11
Цитата Сообщение от m@cChe Посмотреть сообщение
Для OLE DB используй IBProvider.
ПРи чем тут провайдер для Firebirda к бахам Fox'a?
Не вводите в заблуждение человека
1
44 / 44 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
22.11.2013, 14:28 12
Да, не прав.
0
Заблокирован
10.04.2014, 14:01 13
Топикстартер, так получилось или нет? Выложи решение, тоже необходимо, желательно подробное
0
0 / 0 / 0
Регистрация: 07.10.2015
Сообщений: 1
07.10.2015, 18:17 14
Решение, которое выше, почти сработало. Но не полностью. Походу, у меня DBF-файл от фокс-про, который часть базы данных. Насколько понимаю, внутри него есть ссылка на .DBC файл (внешний ключ? хз). Ругается, что не найден этот внешний файл. Как проигнорировать ссылки на внешние данные?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2015, 18:17

Как подключить базу данных созданную в DBF Navigator с форматом ".dbf" к приложению на Lazarus?
1) Обязательно ли эти БД хранить ТОЛЬКО на диске C 2) Дайте полный алгоритм подключения их к...

Как "доказать" Delphi, что файл с расширением не DBF - все таки dbf
Добрый день, коллеги-сокнопочники! Бьюсь-ломлюсь в открытую дверь (как мне кажется). Есть файл с...

Экспортировать данные из DataGridView в БД dbf
КАК ЗАПИСАТЬ (СДЕЛАТЬ EXPORT) из грида в dbf? FoxPro

Необходимо произвести "Update" одинаковых данных в 2.dbf из 1.dbf
зарание извеняюсь за корявость темы? вопрос такой. Есть два dbf файла структура баз полностью...


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

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

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