powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DBF+C#
17 сообщений из 17, страница 1 из 1
DBF+C#
    #38611151
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо распарсить dbf и загнать данные в postgres. Нашел такой код
Код: 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.
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.Odbc;
namespace WorkDBF
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
        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;
            }
            //string DB_path = "E:\\ANALIZ.DBF";
           
            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;";
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            WorkDBF WDBF = new WorkDBF();
            dataGridView1.DataSource = WDBF.GetAll("E:\\ANALIZ.DBF");
            dataGridView2.DataSource = WDBF.Execute("SELECT id, name FROM E:\\ANALIZ.DBF");
        }
    }
}


Но вылазит ошибка. Подскажите как решить
...
Рейтинг: 0 / 0
DBF+C#
    #38611174
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возьми vfpoledb
Остальные вопросы в форум по C#
...
Рейтинг: 0 / 0
DBF+C#
    #38611225
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, не совсем понял как мне это поможет. У меня Odbc а не ole
...
Рейтинг: 0 / 0
DBF+C#
    #38611237
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerDima T, не совсем понял как мне это поможет. У меня Odbc а не ole
Я так понимаю это ADO.
Почитай , может найдешь чего полезное

Если честно - смутно представляю что это такое, в фоксе оно не нужно, т.к. он без всяких драйверов работает с DBF.
...
Рейтинг: 0 / 0
DBF+C#
    #38611312
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как ни странно dbf я создать могу .
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
namespace WorkDBF
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            OdbcConnection conn = new OdbcConnection();

            conn.ConnectionString = @"Driver={Microsoft dBASE Driver (*.dbf)}";

            //объявляем команду создания новой таблички dbf
            OdbcCommand cmd_create = new OdbcCommand(@"CREATE TABLE [{0}] " + "(itemName Char(40), itemValue Numeric,  itemInfo Char(150))", conn);

            conn.Open(); //открываем соединение
            cmd_create.ExecuteNonQuery(); //выполняем команду
            conn.Close();//закрываем соединение
        }
...
Рейтинг: 0 / 0
DBF+C#
    #38611555
Ffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Microsoft dBase Driver это не фокспрошный драйвер.
...
Рейтинг: 0 / 0
DBF+C#
    #38611705
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте SSIS:
click
Вместо SQL Server будет Ваш postgres провайдер или что там у него есть...
...
Рейтинг: 0 / 0
DBF+C#
    #38611957
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Ch, c postgresom позже разберусь, он пока не принципиален, с ним работать я умею. вот dbf - вот это боль. все примеры либо не работают, либо ОЧЕНЬ сложны для понимания. Не думал что проблемы возникнут на этом этапе. мне посоветовали вот что
...
Рейтинг: 0 / 0
DBF+C#
    #38611960
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если DBF от Visual FoxPro то только vfpoledb, т.к. фокс использует слегка модифицированный заголовок DBF, а другие его не понимают. Например эксель не откроет DBF от VFP.

PS Если просто прочитать и экспортировать, то можешь читать прямо из файла без всяких драйверов, структура у DBF простая .
...
Рейтинг: 0 / 0
DBF+C#
    #38611961
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, ну у меня openOffice читает dbf без проблем. так вроде и классы нашел. трабла в этих драйверах диких
...
Рейтинг: 0 / 0
DBF+C#
    #38611966
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerDima T, ну у меня openOffice читает dbf без проблем
Попробовал. Правда читает, обогнали MS в этом вопросе.
Только не все читает. Если есть поле с автоинкрементом, то не читается.
...
Рейтинг: 0 / 0
DBF+C#
    #38611978
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дошел до такого
Код: c#
1.
2.
3.
4.
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection("Provider=VFPOLEDB.1;Data Source=e:\\");
System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM ANALIZ.DBF", conn);
conn.Open();
da.Fill(ds);


честно не знаю что происходит как бы это вывести на экран (может через datagrid)
...
Рейтинг: 0 / 0
DBF+C#
    #38611980
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerкак бы это вывести на экран (может через datagrid)
Это вопрос в форум по C#, тут на фоксе пишут.
...
Рейтинг: 0 / 0
DBF+C#
    #38611984
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на фоксе это так пишется
Код: sql
1.
2.
3.
4.
* открываем
use E:\ANALIZ.DBF
* выводим на экран
browse


Чтобы было понимание почему тут тебе не подскажут.
...
Рейтинг: 0 / 0
DBF+C#
    #38611992
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем участвующим. Решил вопрос Ответ
...
Рейтинг: 0 / 0
DBF+C#
    #38612074
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerSergey Ch, c postgresom позже разберусь, он пока не принципиален, с ним работать я умею. вот dbf - вот это боль.
Вот несколько примеров кода с использованием C# и VFP OleDbProvider:

тынц

В этом форуме мы уже пару лет назад обсуждали эту проблему и я за пару часов написал пример как представить данные из VFP table на ASP.NET web page (C#):

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
      String strConnection = @"provider=VFPOLEDB.1 ;data source='C:\dev\ChsN\VFPExample01\App_Data\TESTDATA.DBC';password='';user id=''";
      OleDbConnection VFP7Connection = new OleDbConnection();
      VFP7Connection.ConnectionString = strConnection;
      VFP7Connection.Open();

      // Create a Command object with select statement.
      String strSelect = "SELECT * FROM country";
      OleDbCommand VFP7SelectCommand = new 
      OleDbCommand(strSelect,VFP7Connection);

      // Create a DataAdapter.
      OleDbDataAdapter VFP9DataAdapter = new OleDbDataAdapter();
      VFP9DataAdapter.SelectCommand = VFP7SelectCommand;

      // Create a DataSet.
      DataSet VFP7DataSet = new DataSet();

      // Fill the DataSet with table information.
      int iRecFound;
      iRecFound = VFP9DataAdapter.Fill(VFP7DataSet,"Customer");

      grdMovies.DataSource = VFP7DataSet;
      grdMovies.DataBind();



работающий пример

еще немного кода

Good luck!
...
Рейтинг: 0 / 0
DBF+C#
    #38620021
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
он ругается + Перехвачено: "Поставщик не смог определить значение Decimal. Например, строка только что была создана, значение по умолчанию для столбца Decimal не было доступно, а потребитель еще не задал нового значения Decimal." (System.InvalidOperationException)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DBF+C#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]