Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/46: Рейтинг темы: голосов - 46, средняя оценка - 4.61
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81

Прочитать содержимое dbf (файл SER.Dbf). И вывести содержимое нескольких полей

16.06.2014, 10:54. Показов 9521. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет) Можете пожалуйста помочь, может кто хорошо разбирается в работе с dbf файлами...
Задача такая: прочитать содержимое dbf (файл SER.dbf). И вывести содержимое нескольких полей, можно в датаГрид или в текстовый файл. При этом мне необходимо еще и выборочно вывести содержимое этих полей, к примеру чтобы выводило поле RN, если оно не пустое.

Вот код, который я нашел в интернете:
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
using System;
using System.Data.Odbc;
using System.Data;
using System.Windows.Forms;
 
 
class WorkDBF
{
   private OdbcConnection Conn = null;
   public DataTable Execute(string Command)
   {
      DataTable dt = null;
      if (Conn != null)
      {
         try
         {
            Conn.Open();
            dt = new DataTable();
            System.Data.Odbc.OdbcCommand oCmd = Conn.CreateCommand();
            oCmd.CommandText = Command;  
            dt.Load(oCmd.ExecuteReader());
            Conn.Close();
         }
         catch (Exception e)
         {
             MessageBox.Show(e.Message); 
         }
      }
      return dt; 
   }
   public DataTable GetAll(string DB_path)
   {
      return Execute("SELECT * FROM " + DB_path);
   }
 
   public WorkDBF()
   {
      this.Conn = new System.Data.Odbc.OdbcConnection();
      Conn.ConnectionString = @"Driver={Microsoft dBase  Driver (*.dbf)};" +
             "SourceType=DBF;Exclusive=No;" +
             "Collate=Machine;NULL=NO;DELETED=NO;" +
             "BACKGROUNDFETCH=NO;"; 
   }
}
и в кнопке
C#
1
2
WDBF = new WorkDBF();
dataGridView1.DataSource = WDBF.Execute("SELECT RN FROM C:\\SER.dbf");
И при запуске программа выдает ошибку: ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified.
Помогите пожалуйста разобраться!)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.06.2014, 10:54
Ответы с готовыми решениями:

Работа с dbf в C# - вывести содержимое dbf в dataGridView
Необходимо вывести содержимое dbf в dataGridView, подскажите как сделать.... Заранее спасибо....

Запись в существующий .dbf файл
Добрый день форумчане. У меня есть несколько dbf, их всех нужно переписать в 1 файл. Собственно сам вопрос, как сделать запись в уже...

Экспорт таблицы в файл dbf
Вопрос следующий Имееться табличка на SQL сервере необходимо программно (на С#) организовать экспорт в файл dbf (MS-DOS). Как проще...

31
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
17.06.2014, 15:20  [ТС]
Студворк — интернет-сервис помощи студентам
Все круто, только теперь другой вопрос как мне теперь написать чтобы он выводил все строки поля RN, которые не пустые...?
Я как понимаю надо использовать where в этой строчке, только как не могу понять...
C#
1
var dt = dbf.Execute(@"select RN from C:\SER\SER.DBF");
0
 Аватар для m@cChe
45 / 45 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
17.06.2014, 15:57
Лучший ответ Сообщение было отмечено Greed29rus как решение

Решение

Держи
C#
1
var dt = dbf.Execute(@"Select RN from C:\Users\Vinogradov\Documents\SER\SER.DBF where RN <> null"
1
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
17.06.2014, 16:17  [ТС]
Огроменное спасибо, и я надеюсь последний вопрос:помимо не пустого RN необходимо в поле VID найти все строки где есть слово "освид"
Пишу так: (Плохо разбираюсь в синтаксисе, да и вообще в работе с БД)
var dt = dbf.Execute(@"Select RN from C:\Users\Vinogradov\Documents\SER\SER.DB F where RN <> null and VID %освид%" - не правильно...
Подскажите, пожалуйста как надо..)
0
 Аватар для m@cChe
45 / 45 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
17.06.2014, 16:22
Держи
SQL
1
@"Select RN, VID from C:\SER\SER.DBF where RN <> null and VID like '%освид%'"
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
18.06.2014, 14:53  [ТС]
точно like забыл... ахаха) Спасибо еще раз. А случайно нет ни какой статьи на эту тему у Вас поблизости, чобы получше познакомиться?

Добавлено через 22 часа 25 минут
А еще можете подсказать пожалуйста как выбрать те строки в поле DATA, которые входят в промежуток от сегодняшнего дня и до месяца. То есть например брать только те записи которые имеют дату от сегодняшнего дня до 18.05.2014?
0
 Аватар для m@cChe
45 / 45 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
18.06.2014, 15:16
05.05.2014 - это максимальная дата в файле.

Поставьте вопрос корректнее.

Добавлено через 4 минуты
Цитата Сообщение от Greed29rus Посмотреть сообщение
сегодняшнего дня и до месяца
Цитата Сообщение от Greed29rus Посмотреть сообщение
То есть например брать только те записи которые имеют дату от сегодняшнего дня до 18.05.2014
Я к сожалению не экстрасенс
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
18.06.2014, 16:27  [ТС]
Да это максимальная... тогда можно до 18.01.2014
То есть мне надо чтобы выводило записи не позднее 18.01.2014...
В моем случае, в результате должно выводиться 2 последние записи)
0
 Аватар для m@cChe
45 / 45 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
18.06.2014, 17:48
Так что ли?:
SQL
1
@"select data from C:\SER\SER.DBF where data = datevalue('05.05.2014') or data = datevalue('02.02.2014')"
?
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
19.06.2014, 00:25  [ТС]
Отдельно каждую дату я тоже думал, но если этих записей будет штук 100... В теории это как то должно быть так: сегодняшняя дата минус 3 месяца (например). А в запросе этом нельзя что нибудь типа 'between'?
0
 Аватар для m@cChe
45 / 45 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
19.06.2014, 10:51
T-SQL
1
WHERE DATA < DateValue('19.06.2014') AND DATA > DateValue('19.03.2014');


Добавлено через 3 минуты
http://articles.org.ru/docum/sql_oper.php
http://www.askit.ru/custom/ora... itions.htm
http://msdn.microsoft.com/ru-r... 88074.aspx

Думаю Вам стоит поучить.

Добавлено через 10 часов 14 минут
T-SQL
1
WHERE DATA > DateValue('19.06.2014') AND DATA < DateValue('19.03.2014');
1
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
19.06.2014, 15:47  [ТС]
Есть небольшая проблема, при выводе из другого файла dbf в datagridview русские слова отображаются как разные символы, ну тут в принципе проблема ясна - кодировка другая... Вопрос: есть ли какая то возможность задать кодировку, которая необходима при выводе в datagrid?
0
 Аватар для m@cChe
45 / 45 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
19.06.2014, 15:48
Создавайте уже новую тему....
Эту заюзали уже.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.06.2014, 15:48

Экспорт из DataTable в .dbf файл
Всем здравствуйте! Проблема следующая: есть DataTable, а которой хранятся данные. Необходимо экспортировать эту таблицу в файл .dbf. ...

Как создать .dbf файл?
Необходимо данные сохранить в .dbf файле. Как читать и записывать в файл вроде много написано в Инете. А вот как программно в C#...

Запись данных в файл с расширение *.dbf
Задача есть форма на ней текст бокс с него надо занести данные в файл с расширение dbf. Помогите не могу не как настроить OleDbConnection...

Сохранение данных из DataTable в dbf файл
Помогите пожалуйста, есть созданный и заполненный DataTable. Необходимо сохранить его в dbf файл на ПК. Как реализовать эту задачу?

Объединить содержимое нескольких строк
Здравствуйте. Есть грид, в который поочередно (после ввода номера картриджа и нажатия кнопки) выводятся разные значения. Надо объединить...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru