![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод из Fox в InterBase [D7]
ElvenArch © (2006-09-25 22:03:00)Доброго всем!
Суть проблемы - в фирме, где я работаю, надо совершить перевод старой системы АСУ бухгалтерией и производством, написанной на каком-то очень древнем Фоксе, на что-нибудь более новое. Но с нуля написать не удасться, поскольку начальство решило что переход будет постепенным, т.е. - отключаю одну часть старой АСУ, запускаю свою версию. У меня возникло несколько вопросов и проблем
1. Хоть Фокс и сохраняет таблицы в dbf формате, но русские символы отображаються "иероглифами". Подскажите как быть. Не хочеться переписывать базу 2000 фирм с адресами и реквизитами.
2. Поскольку базами данных занимаюсь недавно, хочу улышать Ваше мнение: реально ли каким-то образом открыть dbf файл через Дэлфи, если он уже открыт Фоксом, + возможен ли совместный доступ к таблице InterBase или Paradox ( к примеру, один редактирует таблицу - остальные только могут просматривать или делать выборку информации.
Заранее спасибо.
Sergey13 (2006-09-28 15:43:00) [1]> [11] VALUA (28.09.06 15:37)
Я присел и сказал 2 раза "Ку".
VALUA (2006-09-28 15:37:00) [2]Когда-то я переписывала из FoxPro в Delphi , база Firebierd , IBExpert .
Для FoxPro - страница BDE , компоненты DataSource , Query .
DataSource - Свойство - DataBaseName пишется место нахождения файла
FoxPro -> D:\NOV\dbf\ .
Для Delphi - DataSource , IBQuery , IBDataBase , IBstoredProc .
Пример :
SELECT * FROM semp_n.DBF ORDER BY TABN,FAM,IM,OT - файл FoxPro - пишется в свойстве Query .
while not Query1.Eof do begin
if (Query1['TABN'] = null) then tn1 := ''
else
TN1 := Trim(Query1['TABN']);
FAM1 := Trim(Query1['FAM']);
IM1 := Trim(Query1['IM']);
OT1 := Trim(Query1['OT']);
------ запись в база Firebierd , IBExpert ----------
IBStoredProc1.ParambyName('Kod_Lk').AsInteger := Kod;
IBStoredProc1.ParambyName('Tabn').AsString := Tn1;
IBStoredProc1.ParambyName('Fam').Asstring := FAM1;
IBStoredProc1.ParambyName('Im').AsString := IM1;
IBStoredProc1.ParambyName('Ot').AsString := OT1;
IBStoredProc1.Prepare;
IBStoredProc1.ExecProc;
IBStoredProc1.UnPrepare;
---------------------------------------------------
Query1.Next;
end; // whil query1
VALUA (2006-09-28 15:37:00) [3]Когда-то я переписывала из FoxPro в Delphi , база Firebierd , IBExpert .
Для FoxPro - страница BDE , компоненты DataSource , Query .
DataSource - Свойство - DataBaseName пишется место нахождения файла
FoxPro -> D:\NOV\dbf\ .
Для Delphi - DataSource , IBQuery , IBDataBase , IBstoredProc .
Пример :
SELECT * FROM semp_n.DBF ORDER BY TABN,FAM,IM,OT - файл FoxPro - пишется в свойстве Query .
while not Query1.Eof do begin
if (Query1['TABN'] = null) then tn1 := ''
else
TN1 := Trim(Query1['TABN']);
FAM1 := Trim(Query1['FAM']);
IM1 := Trim(Query1['IM']);
OT1 := Trim(Query1['OT']);
------ запись в база Firebierd , IBExpert ----------
IBStoredProc1.ParambyName('Kod_Lk').AsInteger := Kod;
IBStoredProc1.ParambyName('Tabn').AsString := Tn1;
IBStoredProc1.ParambyName('Fam').Asstring := FAM1;
IBStoredProc1.ParambyName('Im').AsString := IM1;
IBStoredProc1.ParambyName('Ot').AsString := OT1;
IBStoredProc1.Prepare;
IBStoredProc1.ExecProc;
IBStoredProc1.UnPrepare;
---------------------------------------------------
Query1.Next;
end; // whil query1
Sergey13 (2006-09-27 16:11:00) [4]> [0] ElvenArch © (25.09.06 22:03)
> Суть проблемы - в фирме
Прочитав ветку понял, что это правда. 8-)
> 1. За сегодняшний рабочий день произошла корректировка -
> начальство решило что переписывать АСУ я буду под Парадокс(кто-
> то им посоветовал...). Подскажите где лучше взять инфу по
> нему.
> Раньше я програмировал
> только управление оборудованием нашего завода с помощью
> Дэлфи и с базами данных не сталкивался.
Перевод "системы АСУ с бухгалтерией и производством" на Парадокс + поручить это человеку, не знакомому с БД (это не наезд, не обижайся)!!! Точно проблема в фирме.
Anatoly Podgoretsky (2006-09-27 16:08:00) [5]ElvenArch © (26.09.06 23:33) [6]
Такой как ты и посоветовал.
Desdechado (2006-09-27 16:00:00) [6]1,2. парадокс хуже фокса с точки зрения хранения данных и умер давно и надежно. Шаг к нему - шаг в могилу (как программисту, так и конторе)
3. если из фокса не открывать монопольно, то доступ на чтение тривиален
4. подключи xxxReport
atruhin (2006-09-27 05:39:00) [7]Во первых Парадокс - морально устаревшая система, практически неработоспособна при более 3-5 пользователях. Так что отказаться однозначно.
Во вторых судя по уровню вопросов, рано тебе браться за написание ПО для АСУ, минимум год интенсивного обучения.
ElvenArch (2006-09-26 23:33:00) [8]Спасибо за советы.
1. За сегодняшний рабочий день произошла корректировка - начальство решило что переписывать АСУ я буду под Парадокс(кто-то им посоветовал...). Подскажите где лучше взять инфу по нему.
2. Тоже по поводу инфы об одновременном доступе к таблицам Парадокса(один юзер редактирует - остальные смотрят).
3. Сегодня пол дня бился над одновременным доступом к Фоксовому дбфнику(пользователь Фокса редактирует дбф, моим надо выбрать информацию), ничего умнее программного повтора попыток доступа не придумалось.
4. Совсем детский вопрос: как распечатать содержимое ДБГрид(ну не требовалось мне раньше такого :)?
П.С. Извиняюсь за обилие вопросов. Раньше я програмировал только управление оборудованием нашего завода с помощью Дэлфи и с базами данных не сталкивался. Спасибо за помощь :)
Desdechado (2006-09-26 11:59:00) [9]> возможен ли совместный доступ к таблице InterBase
Если уж работать с IB, то забыть про табличный достпук как про страшный сон. Работа только через SQL (выборки наборов данных по условиям, обновления/удаления данных по условиям).
В этом случае вероятность конкурентных транзакций низка.
ЗЫ читать долго и внимательноibase.ru
Desdechado (2006-09-26 11:54:00) [10]> реально ли каким-то образом открыть dbf файл через Дэлфи,
> если он уже открыт Фоксом
Открыть, теоретически, можно. Но т.к. система блокировок записей в БДЕ и фоксе несовместимы между собой, то ОЧЕНЬрекомендую из Дельфи открывать только для чтения. Иначе попытки конкурентной записи/удаления данных могут привести к их порче. Ведь механизм записи в фоксе какой: блокируется запись или файл, вносятся изменения, разблокируются. А т.к. БДЕ этих блокировок не видит (так же, как и фокс не видит блокировок, сделанных БДЕ), то возможны варианты, когда одну и ту же запись одновременно пишут с разных сторон, что особенно опасно в случае транзакций из изменения нескольких записей.
Сергей М. (2006-09-26 08:56:00) [11]Я, вероятно, не верно истолковал вопрос
> возможен ли совместный доступ к таблице InterBase или Paradox
Да, разумеется, одновременный доступ к объектам БД InterBase и Paradox возможен.
Сергей М. (2006-09-26 08:52:00) [12]
> Фокс и сохраняет таблицы в dbf формате, но русские символы
> отображаються "иероглифами". Подскажите как быть
Настроить драйвер Фокса в Администраторе BDE след.образом:
Панель управления -> BDEAdministrator -> Configuration -> Drivers -> Native -> FoxPro -> LANGDRIVER = dBASE RUS cp866
> реально ли каким-то образом открыть dbf файл через Дэлфи,
> если он уже открыт Фоксом
Это зависит от многих факторов.
Если фоксовая программа реализована как сетевая (клиент файл-серверной СУБД), то доступ к таблицам "извне" как правило возможен, за исключением случаев, когда фокс производит регламентные операции (реиндексация, упаковка и т.д. и т.п.)
> возможен ли совместный доступ к таблице InterBase или Paradox
> ( к примеру, один редактирует таблицу - остальные только
> могут просматривать или делать выборку информации
Возможен, но чреват регулярными падениями индексов, а в ряде случаев и безвозвратной потерей инф-ции при одновременном доступе к таблицам по записи со стороны родного фоксового драйвера и, например, dbf-драйвера в составе BDE.
ElvenArch (2006-09-25 22:07:00) [13]С чего я решил что Фокс древний - прога АСУ работает только на машинах с 98 виндой, в 16 цветах.