Змінюй хід війни! Допомагай ЗСУ!

БФ: Сдружить Paradox 5.x и .Net Framework

🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район

Lam

Статус: Offline
Реєстрація: 26.02.2005
Повідом.: 311
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #1
БФ: Сдружить Paradox 5.x и .Net Framework

Собственно вопрос таков: как получить доступ к парадоксавским таблицам по средствам ADO.NET? Через ODBC провайдеры и OLE DB провайдеры - не получается. Может у кого есть готовый пример?
 
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #2
Закопай его обратно.
Шутка юмора.
А если серьезно, то если мне не изменяет память, то твои таблицы это dbf обычный. Дальше сам разберешся.
 
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #3
Закопай его обратно.
Шутка юмора.
А если серьезно, то если мне не изменяет память, то твои таблицы это dbf обычный. Дальше сам разберешся.

Нифига это не dbf. А насчет закопать - хорошая мысль, никак нельзя что-то другое использовать?
 
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #4
По-моему есть провайдер OLEDBшный под Paradox. А OLEDB можно без проблем юзать из ADO .NET
 
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #5
Да, точно попутал Paradox с Foxpro. Ну это дела не меняет :)
 
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #6
Вот ветка Майкрософтовского форума с примером:
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
 
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #7
Нифига это не dbf. А насчет закопать - хорошая мысль, никак нельзя что-то другое использовать?

с превеликим удовольствием закопал бы и использовал тот же PostgreSQL или MySQL, но как говорится в песне: "Бывает же так, что заказчик дурак... и срёт не в унитаз, а на стульчак..." (с) Шнуров
посему, есть програ которая крутится на парадоксе старючем и нужно дописать под неё расширение... вот и приходится заниматься онанизмом (прошу простить).
по поводу обычного dbf - это не так, там (у парадокса) свой спецефичный формат баз данных.

то neocortex: у меня получилось последний раз получить при помощи JET.OLEDB провайдера список таблиц, в дизайнере да же удалось выполнить пару запросов(хотя дико медленно), но вот вывести данные в DataGridVeiw - почему-то так и не удалось (не исключено что рученьки из сраченьки).
За ссылочку большое спс, буду читать, но хотелось бы еще каких нить вариантов, больше не кто ничего посоветовать не может? :)
 
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #8
у меня получилось последний раз получить при помощи JET.OLEDB провайдера список таблиц, в дизайнере да же удалось выполнить пару запросов(хотя дико медленно), но вот вывести данные в DataGridVeiw - почему-то так и не удалось

Если запросы выполняются в дизайнере - значит, с самим подсоединением к Paradox ты проблему уже порешал. Ищи проблемы с юзанием датагрида, может, ты data binding как-то криво делаешь?

Добейся сначала стабильной вычитки данных в DataTable через DataAdapter, если эта часть заработает, значит косяки точно в биндинге.
 
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #9
вроде бы уже заборол, спасибо вражескому форуму и Вашей ссылке.
Получаю данные и вывожу в грид уже вроде бы нормально (но медленно), по всей видимости от этого уже не куда не деться :(
делаю при помощи такого вот метода (код на C#):
PHP:
 private OleDbDataAdapter ConnectParadox(string pPath, string pQuery)
        {
            string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pPath + ";Extended Properties=Paradox 5.x;";
            try
            {
                OleDbConnection oleConnection = new OleDbConnection(strConnection);
                oleConnection.Open();
                OleDbDataAdapter oleAdapter = new OleDbDataAdapter(pQuery, oleConnection);
                return oleAdapter;
            }
            catch (OleDbException e)
            {
                MessageBox.Show(e.Message);
                return null;
            }
        }
и далее вызываю в обработчике OnLoad (код на C#):
PHP:
 string query1 = "select depart.shifr, depart.name, sum(graf.days) " +
                            "from state " +
                            "inner join graf g on g.stateid = state.id and g.vrvid = 1 " +
                            "inner join depart d on state.depid = depart.'key' " +
                            "where g.period = 200907 " +
                            "group by depart.shifr, depart.name";
            
       
            OleDbDataAdapter OleAdapt = ConnectParadox(@"C:\myDB", query1);
            DataTable oleTable = new DataTable("tablename");
            OleAdapt.Fill(oleTable);
            dataGridView1.DataSource = oleTable;
запросы уровня "select * from myTable" проходят на ура, а вот запрос который написан выше - получаю Unhandled OleDBException сообщающее что: "Ошибка синтаксиса (пропущен оператор) в выражении запроса ''."

может кто подскажет как быть дальше и в чём глюк?

ЗЫ: прошу ногами не пинать по поводу имен полей в таблицах, их разробатывал не я, я только отдуваюсь за соедянное :(
 
Останнє редагування:
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #10
запросы уровня "select * from myTable" проходят на ура, а вот запрос который написан выше - получаю Unhandled OleDBException

А ты уверен, что в Paradox точно такой же синтаксис запросов, как и в T-SQL? SQL - он же только на бумаге стандарт, а в реале в каждой БД наворотили своего...

Вот статейка про JOINы в Paradox'е:
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.


Но там про Борландовский драйвер Local SQL, не факт, что у MSовского JET OLEDB тот же диалект SQL. На всякий случай покури доки по Jet-провайдеру

Кстати, Connection руками открывать не нужно, по-моему DataAdapter сам это делает.
 
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #11
спс почитаю, а по поводу синтаксиса не уверен, но могу сказать, что в иннете нашел ActiveX компонент (как утверждает разработчик), который через BDE работает с Paradox-ом, так вот в этой программулине вышеупомянутый запрос проходит на ура. ссылка на собственно программулину -
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.


а по поводу
Кстати, Connection руками открывать не нужно, по-моему DataAdapter сам это делает.
код не мой, а вот на сколько я понял соединение там открывается исключительно для того, что бы проверить работоспособность этого соединения перед возвращением DataAdapter-а, но тогда наверное логично было бы закрывать соединение сразу же после открытия.
 
Останнє редагування:
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #12
а по поводу синтаксиса не уверен, но могу сказать, что в иннете нашел ActiveX компонент (как утверждает разработчик), который через BDE работает с Paradox-ом, так вот в этой программулине вышеупомянутый запрос проходит на ура.

В том-то и дело. У BDE и Microsoft Jet совершенно разные движки (разбора SQL запросов в том числе). Поэтому синтаксис, который прокатывает в BDE, совершенно необязательно заработает в Microsoft Jet.

Вот основные доки по синтаксису Jet Database Engine:

⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
 
  • 🟡 15:21 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #13
Большое СПС.
запрос получилось сделать так:
PHP:
string query = "SELECT     DEPART.[Key], SUM(GRAF.Days) AS ColDays " +
                            "FROM         ((STATE INNER JOIN " +
                            "                      GRAF ON STATE.Id = GRAF.ID) INNER JOIN " +
                            "                      DEPART ON STATE.DepId = DEPART.[Key]) " +
                            "WHERE     (GRAF.VrvId = {0}) AND (GRAF.Period = " + datePeriod + ") " +
                            "GROUP BY DEPART.[Key], order by DEPART.[Key]";
как оказалось - конструктор запросов в VS это наше всё. :)
 
Назад
Зверху Знизу