Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Можно ли разрабатывать что-то серьезное в Acces... Добавлено: 20.09.02 15:42  

Автор вопроса:  ViDo

  Доброго времени суток.
  У меня возникла проблема, которая подрывает доверие к MS Access и,
пока она не будет решена, делает невозможной работу в этом пакете.
Помогите, пожалуйста, решить эту проблему.
  Ситуация заключается в следующем:
  Есть большая (около 300 Мбайт) база данных, написанная на FoxPro -
статистика работы газопровода за пять лет. Причем данные организован
таким образом, что каждому месяцу соответствует отдельный каталог с
названием Mmmyy, где mm - номер месяца, yy - номер года. В каждом
каталоге 10 dbf-файлов.
  Задача заключается в том, чтобы выбрать из этой базы интересующую
информацию, по которой расчитываются определенные параметры. Эти
параметры записываются в одну таблицу Access.
  Я написал небольшую программку, выполняющую эти действия. Позже в
эту программу было добавлено дублирование вычисления парметров
(MTG и MTG1) и сравнение оригинала и дубликата друг с другом.
  Во время работы этой программы Access не выдает никаких собщений
об ошибках, но получаются парадоксальные результаты:
  !!Две переменных, вычисленные по одним и тем же формулам на одних и
тех же исходных данных с интервалом милисекунды, иногда имеют разное
значение.!! Причем при неоднократном запуске программы такого рода
"сбои вычислений" возникают в разные обрабатываемые дни. При одном
проходе данные вычисляются правильно, при дугом - дают разницу.
  Помогите разобраться, что в приведенной ниже программе могло
послужить причиной такого рода сбоев. Если такие ошибки возникают в
Access'е при выполнении сравнительно простых математических операций,
то о какой разработке, например, бухгалтерских приложений может идти
речь?
  С уважением, Виктор Добров
   mailto: vido@sky.net.ua


Attribute VB_Name = "Convert"
Option Compare Database
Option Explicit

Public Const DirPath = "d:\KTG" 'Путь к базе данных DBF
Public DBNames$(1 To 10) 'Названия используемых таблиц
Public ErrFlag As Boolean 'Флаг налчия ошибк

Public StartDate As Date 'Начальная дата обработки
Public FinishDate As Date 'Конечная дата обработки
Public PosExel As Long 'Счетчик текущей обрабатываемй записи

Dim tb As TableDef
Dim rs As Recordset
Const ResName$ = "Result" 'Название таблицы результатов

Public CurDate As Date 'Текущий день обработки

'Вычисляемые переменные
Public MTG As Single
Public MTG_EG As Single
Public CHTG As Single
Public HGPU As Single
Public PGPU As Single
Public SHGPU As Single
Public PLAST As Single
Public CHNGG As Single
Public HTG As Single
Public UKRNAFTA As Single
Public OTBOR As Single
Public ZAKACHKA As Single
Public ZAPAS As Single
Public ZMINA As Single
Public ZMINA_EG As Single
Public CHTG_R As Single
Public CHTG_R_EG As Single
Public LTG As Single
Public OHTIRKA As Single
Public POLTAVA As Single
Public RF As Single
Public BILORUS As Single
Public UKRAINE As Single
Public PG As Single
Public PG_EG As Single
Public TP As Single
Public TP_EG As Single

'Дублирование вычисляемых переменных
Public MTG1 As Single
Public MTG_EG1 As Single
Public CHTG1 As Single
Public HGPU1 As Single
Public PGPU1 As Single
Public SHGPU1 As Single
Public PLAST1 As Single
Public CHNGG1 As Single
Public HTG1 As Single
Public UKRNAFTA1 As Single
Public OTBOR1 As Single
Public ZAKACHKA1 As Single
Public ZAPAS1 As Single
Public ZMINA1 As Single
Public ZMINA_EG1 As Single
Public CHTG_R1 As Single
Public CHTG_R_EG1 As Single
Public LTG1 As Single
Public OHTIRKA1 As Single
Public POLTAVA1 As Single
Public RF1 As Single
Public BILORUS1 As Single
Public UKRAINE1 As Single
Public PG1 As Single
Public PG_EG1 As Single
Public TP1 As Single
Public TP_EG1 As Single

Sub InitDBNames() 'Задания названий используемых таблиц
  DBNames$(1) = "BF.DBF"
  DBNames$(2) = "IF.DBF"
  DBNames$(3) = "ZF.DBF"
  DBNames$(4) = "WF.DBF"
  DBNames$(5) = "PF.DBF"
  DBNames$(6) = "OF.DBF"
  DBNames$(7) = "AF.DBF"
  DBNames$(8) = "WLAP.DBF"
  DBNames$(9) = "OBJEKT.DBF"
  DBNames$(10) = "AGNKS.DBF"
End Sub

Sub AddTables() 'Загрузка в базу DBF-таблиц
  Dim DatePath As String, MStr As String, YStr As String
  Dim i As Long
  MStr = Month(CurDate) 'Обрабатываемый месяц
  If Len(MStr) = 1 Then MStr = "0" & MStr
  YStr = Right(Year(CurDate), 2) 'Обрабатываемый год
  DatePath = DirPath & "\M" & MStr & YStr & "\"
  For i = 1 To 10 'Процесс импорта таблиц
    DoCmd.TransferDatabase acImport, "dBase III", _
      DatePath, acTable, DBNames$(i), Left(DBNames$(i), Len(DBNames$(i)) - 4)
  Next i
End Sub

Sub DeleteTables() 'Удаление обработанных таблиц из базы
  Dim i As Long
  On Error Resume Next 'На всякий случай
  For i = 1 To 10
    DoCmd.DeleteObject acTable, Left(DBNames$(i), Len(DBNames$(i)) - 4)
  Next i
  On Error GoTo 0
End Sub

Sub CalcParam() 'Вычисление параметров
  Dim mSQL As String
  ErrFlag = False 'Сброс индикатора ошибки
  MTG = Round(Nz(DSum("[Q" & Day(CurDate) & "]", "ZF", _
    "([NSHIFR]='zk10') Or ([NSHIFR]='zk11') Or ([NSHIFR]='zk12') Or " & _
    "([NSHIFR]='zk13') Or ([NSHIFR]='zk14') Or ([NSHIFR]='zk16')")), 2)
  MTG_EG = Round(Nz(DSum("[Q" & Day(CurDate) & "]", "ZF", _
    "([NSHIFR]='zk10') Or ([NSHIFR]='zk11') Or ([NSHIFR]='zk12') ")), 2)
  CHTG = Round(Nz(DSum("[Q" & Day(CurDate) & "]", "IF", "([NSHIFR]='ik81')")), 2)
  HGPU = Round(Nz(DSum("[Q" & Day(CurDate) & "]", "IF", "([NSHIFR]='ik41')")), 2)
  PGPU = Round(Nz(DSum("[Q" & Day(CurDate) & "]", "IF", "([NSHIFR]='ik19') or ([NSHIFR]='ik50')")), 2)
  SHGPU = Round(Nz(DSum("[Q" & Day(CurDate) & "]", "IF", "([NSHIFR]='ik80')")), 2)
  PLAST = Round(Nz(DSum("[Q" & Day(CurDate) & "]", "IF", "([NSHIFR]='ik110')")), 2)
  CHNGG = Round(Nz(DSum("[Q" & Day(CurDate) & "]", "IF", "([NSHIFR]='ik111')")), 2)
  HTG = Round(Nz(DSum("[Q" & Day(CurDate) & "]", "IF", "([NSHIFR]='ik109')")), 2)
  UKRNAFTA = Round(Nz(DSum("[Q" & Day(CurDate) & "]", "IF", _
    "([NSHIFR]='ik32') or ([NSHIFR]='ik39') or ([NSHIFR]='ik51')")) + _
    Nz(DSum("[Q" & Day(CurDate) & "]", "BF", "([NSHIFR]='bk2')")), 2)
  OTBOR = Round(Nz(DSum("[Q" & Day(CurDate) & "]", "PF", _
    "([NSHIFR]='pk1') or ([NSHIFR]=

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 LIS



Вопросов: 7
Ответов: 256
 Профиль | | #1 Добавлено: 20.09.02 18:56

I did not check source , but YOU CAN USE ACCESS for ANY application type...

You problems are inside program...

Be more accurate and check ANY news for new ACCESS version.

Good luck

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам