2012-02-21 2 views
1

В настоящее время я пытаюсь перенести несколько тысяч записей из файла MULTIKEYED в плоский файл STRING, который создает большую инструкцию SQL INSERT для удаления данных с наших серверов. ФАЙЛ базы для вставки в SQL Server для тестирования.Получение ошибки 31 в BBx (Business Basic)

Я успешно сделал это с несколькими другими файлами с очень похожей программой, но этот продолжает производить переполнение рабочей области с ошибкой 31, я попытался укоротить длину строки, массива и фильтрацию через файл, чтобы я получить только записи с датой новее, чем 15 февраля 2012

вот отрывок сюда mthe онлайн помощь BBx об ошибке 31:

ERROR = 31 - Рабочая область Переполнение памяти Для BBJ-специфической информации, см.! ERROR Изменения в BBj.

Недостаточно памяти рабочего пространства. Выделение большего рабочего пространства с помощью START-глагола может исправить эту ошибку.

• Попытка измерения большой строки или массива.

• Попытка ЗАГРУЗИТЬ большую программу.

• Попытка манипулировать большой струной.

• Попытка прочитать или записать большую запись.

• Попытка редактирования программы, которая приведет к тому, что программа станет больше доступной памяти.

• Попытка сделать программу дольше, чем разрешено, даже если памяти достаточно.

• Попытка ввода команды режима консоли, скомпилированная длина которой превышает 256 байт.

Я довольно уверен, что я не нарушение любого из этих условий

какие-либо идеи?

0001 STRING "/u/x/scc/scott.sql" 
0002 OPEN (1)"/u/x/scc/scott.sql" 
0004 LET ARRAYLEN=27 
0005 DIM A$[1:ARRAYLEN] 
0010 OPEN (2)"V1OEMF" 
0015 LET K$=""; READ (2,KEY=K$,DOM=0016) 
0020 LET K$=KEY(2,END=15000) 
0030 READ (2,KEY=K$)A$[ALL] 
0035 FOR I=1 TO ARRAYLEN STEP 1; IF A$[I]="" THEN LET A$[I]=".."; NEXT I 
0036 FOR I=1 TO ARRAYLEN STEP 1 
0039 IF POS("'"=A$[I])<>0 THEN LET A$[I](POS("'"=A$[I]),1)=" "; GOTO 0039 
0040 NEXT I 
0050 IF A$[14]<"B20215" THEN GOTO 0020 
0080 PRINT "INSERT INTO WMS.dbo.V1OEMF VALUES ('"+A$[1]+"','"+A$[2]+"','"+A$[4 
0080:]+"','"+A$[5]+"','"+A$[6]+"','"+A$[7]+"','"+A$[8]+"','"+A$[9]+"','"+A$[12 
0080:]+"','"+A$[14]+"','"+A$[25]+"','"+A$[27]+"');" 
0100 GOTO 0020 
15000 CLOSE (1); CLOSE (2) 
+0

Я использовал START 2000 для выделения большего объема памяти программе и все еще получаю ошибку – ScottC

ответ

1

Перемещение Next I по линии 35 в своей собственной линии, он не получает выполняется, если IF утверждение ложно

0

мне нужно печатать на канал (1) строка файла вам потребуется. То, как у вас есть, теперь будет просто печатать на экране и быстро заполнять память. Попробуйте изменить строку 80 на Print (1) ..... и т. Д.

+0

Забавная вещь Я пишу в файл на канале 1 Я только изменил его для печати в целях тестирования, чтобы убедиться, что это была некоторая запись, в которой она не срабатывала, я должен был ее изменить, чтобы написать перед публикацией здесь – ScottC

 Смежные вопросы

  • Нет связанных вопросов^_^