Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с коллекциями в фоксе, хотелось бы какой-нибудь удачный пример 
:(
    Опции темы
Cashey
Дата 25.9.2004, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Вот захотелось ознакомиться с нововедением 8-го фокса, кое с чем при помощи хелпа разобрался. Но хотелось бы посмотреть на рабочий пример. Наиболее интересен поиск в коллекции и удаление найденного элемента sample.gif


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Royan
Дата 28.9.2004, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Коллекция это особенный хэш массив, придуманный мелгомягкими и довольно давно использующийся во всем от JScript и теперь до Fox'а. В этом массиве могут храниться объекты каких-либо типов, и в тоже время не всех. Например, если ты когда-нибудь писал на ASP, то, например, Application в IIS'e это типичная коллекция, при этом в нем не возможно хранить элементы типа "Scripting.Dictionary". Подозреваю, что это не единственное ограничение и оно распространяется на все остальные приложения. Насчет примера вот:


Код
 oTxt = CREATEOBJECT("Textbox")  
 oTxt.Value = "one"  
 oColl = CREATEOBJECT("Collection")  
 oColl.Add(oTxt)  && Добавили текст бокс
 ? oColl.Count
 oColl.Remove(1)&& Удалили
 ? oColl.Count


При этом следует помнить о следующем (это уже написано в мануле 9-го Fox'а)
Цитата

FOR EACH ... ENDFOR Command Preserves Object Types
Visual FoxPro now includes the FOXOBJECT keyword for the FOR EACH ... ENDFOR
command to support preservation of native Visual FoxPro object types.

FOR EACH objectVar [AS Type [OF ClassLibrary ]] IN Group FOXOBJECT
Commands
[EXIT]
[LOOP]
ENDFOR | NEXT [Var]

The FOXOBJECT keyword specifies that the objectVar parameter created will be
a Visual FoxPro object. The FOXOBJECT keyword only applies to collections
where the collection is based on a native Visual FoxPro Collection class.
Collections that are COM-based will not support the FOXOBJECT
keyword.


Такие вот дела



--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Cashey
Дата 30.9.2004, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Royan спасибо за попытку помочь, хотя копировать мне содержимое хелпа не самая действенная помощь smile.gif
Я тут кое как сам разобрался и привжу этот код, он демонстрирует работу с коллекциями и классом Empty, а так же из него можно подчеркнуть некоторые простые, но полезные технологии по работе с со строками и установкой SET PROCEDURE TO. Может кому и пригодиться.

Код
*
* Класс реализует установку/снятие прогрмманых библиотек
*   SET PROCEDURE TO
*

DEFINE CLASS TProcMngr AS custom
ADD OBJECT setproc as Collection
 
   * Добавление процедур.
   * cProc1 = '<имя_модуля>[,<код>]'
   PROCEDURE setproc.addlib
   LPARAMETERS lNotAdditive, cProc1, cProc2, cProc3, cProc4, cProc5
   LOCAL cAddPath, j, i, cAddText, vError
   * Разбор параметров
   LOCAL FirstWord1, FirstWord2, FirstWord3, FirstWord4, FirstWord5,;
   SecondWord1, SecondWord2, SecondWord3, SecondWord4, SecondWord5
   cCapt = 'cProc'
   LOCAL ARRAY  aWord[5]
   FOR i = 1 TO 5
        cCapt = cCapt+ALLTRIM(STR(i))
      IF EMPTY(&cCapt)
          aWord[i] = ' , '
      ELSE
          aWord[i] = &cCapt
      ENDIF
      cCapt = 'cProc'
   ENDFOR
   FirstWord1 = nextword(aWord[1],1,',')
   SecondWord1 = nextword(aWord[1],2,',')
   FirstWord2 = nextword(aWord[2],1,',')
   SecondWord2 = nextword(aWord[2],2,',')
   FirstWord3 = nextword(aWord[3],1,',')
   SecondWord3 = nextword(aWord[3],2,',')
   FirstWord4 = nextword(aWord[4],1,',')
   SecondWord4 = nextword(aWord[4],2,',')
   FirstWord5 = nextword(aWord[5],1,',')
   SecondWord5 = nextword(aWord[5],2,',')
******************************************        

   _FirstWord = 'FirstWord'
   _SecondWord = 'SecondWord'
  cAddPath = ""
       FOR j =1 TO 5
           _FirstWord = _FirstWord + ALLTRIM(STR(j))
           _SecondWord= _SecondWord + ALLTRIM(STR(j))
           oEmpty = createObject('Empty')
           = addProperty( oEmpty, 'cName', &_FirstWord)
           = addProperty( oEmpty, 'cCode', &_SecondWord)
           IF !EMPTY(oEmpty.cName)
               IF this.getkey(oEmpty.cName) = 0 && Ключ должен быть уникальным
                   this.Add( oEmpty, Upper( oEmpty.cName))
                   cAddPath = cAddPath + oEmpty.cName + ','
               ENDIF
           ENDIF
           _FirstWord = 'FirstWord'
           _SecondWord = 'SecondWord'      
       ENDFOR
       cAddPath = LEFT(cAddPath, LEN(cAddPath)-1) +' '+ IIF(!lNotAdditive,'Additive', '')
   
   SET PROCEDURE TO &cAddPath
   ENDPROC
   
********************************************************************
   * Удаление процедур.
   * cUproc1= '[<имя_модуля>],[<код>]'
   PROCEDURE setproc.removelib
   LPARAMETERS cUproc1, cUproc2, cUproc3, cUproc4, cUproc5
   LOCAL j, i, cRemText, cRemPath, cCapt, _SetProc, cFword, cSword
   * Разбор параметров
   cCapt = 'cUproc'
   cRemPath = ""
   _SetProc = SET("Procedure")
   FOR i = 1 TO 5
        cCapt = cCapt+ALLTRIM(STR(i))
        cFword = IIF(!EMPTY(&cCapt), nextword(&cCapt,1,','), '')  && Значение параметра до запятой
        cSword = IIF(!EMPTY(&cCapt), nextword(&cCapt,2,','), '')  && Значение параметра после запятой
      cCapt = 'cUproc'
        IF !EMPTY(cFword) && Если передан путь к процедуре
           IF this.ListLib(cFword,_SetProc)   &&Если такая найдена в списке установленных
               IF this.count > 0 && Если объект oEmpty ыд создан в процедуре addlib
                   IF this.GetKey(cFword) # 0
                       cRemPath = cRemPath + cFword +','
                       this.Remove(this.GetKey(cFword))
                   ENDIF
               ELSE
                   cRemPath = cRemPath + cFword +','
               ENDIF
           ENDIF
        ELSE   &&Если передан код, иначе как после выполнения поцедуры addlib, не исполняется!
           IF this.count > 0 && Если объект oEmpty ыд создан в процедуре addlib
               FOR j = 1 TO this.Count
                   IF j <= this.Count
                       IF cSword = this.item(j).cCode
                           IF this.ListLib(this.item(j).cName, _SetProc)
                               cRemPath = cRemPath + this.item(j).cName +','
                               this.Remove(j)
                               j=j-1  
                           ENDIF
                       ENDIF
                   ENDIF
               ENDFOR
           ELSE
                loop
           ENDIF
       ENDIF
   ENDFOR
   
   cRemPath = LEFT(cRemPath, LEN(cRemPath)-1)
   IF !EMPTY(cRemPath)
       RELEASE PROCEDURE &cRemPath
   ENDIF
   ENDPROC

   * Проверяет установлена ли процедура.
   FUNCTION setproc.ListLib
   LPARAMETERS cItem, cSetProc

   * return .T. -  найдено в SET("Procedure")
   LOCAL cText, cText1, i1, cError, SetProc

   SetProc = cSetProc

   IF !EMPTY(SetProc)
       IF OCCURS('\'+cItem+'.FXP',ALLTRIM(SetProc)) > 0
           RETURN .T.  &&Если нашли, то возвращаем .T.
      ENDIF
   ENDIF
  RETURN .F.    
   ENDFUNC    

ENDDEFINE


FUNCTION nextword
LPARAMETERS lcLine, lnWord, lcTab

RETURN;
MLINE(STRTRAN(lcLine, IIF(VARTYPE(lcTab)#'C', ',', lcTab), CHR(13)), lnWord)
ENDFUNC


Это сообщение отредактировал(а) Cashey - 15.10.2004, 20:12


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Cashey
Дата 15.10.2004, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Продолжаем тестировать подсветку Фокса

Код

* *********************************************************
* *
* * 12.04.2004             BUHDATA.DBC             14:22:26
* *
* *********************************************************
* *
* * Description:
* * This program was automatically generated by GENDBC
* * Version 2.26.67
* *
* *********************************************************


LPARAMETERS tcFolder

lcInitFolder=ALLTRIM(SYS(5)-CURDIR())
If !DIRECTORY(tcFolder)
MD (tcFolder)
EndIF

CD (tcFolder)

=ChkNullFiles()
DisplayStatus([Проверяю базу данных BUHDATA.DBC...])
CLOSE DATA ALL
If !FILE('BUHDATA.DBC')
CREATE DATABASE 'BUHDATA.DBC'
Else
OPEN DATABASE 'BUHDATA.DBC' EXCLUSIVE
EndIF
DisplayStatus([Проверяю таблицу DOKUM...])
MakeTable_DOKUM()
DisplayStatus([Проверяю таблицу BSCHETA...])
MakeTable_BSCHETA()
DisplayStatus([Проверяю таблицу BAMOR...])
MakeTable_BAMOR()
DisplayStatus([Проверяю таблицу BUHBOOK...])
MakeTable_BUHBOOK()
DisplayStatus([Проверяю таблицу BGRAMOR...])
MakeTable_BGRAMOR()
DisplayStatus([Проверяю таблицу BISKL...])
MakeTable_BISKL()
DisplayStatus([Проверяю таблицу BEDRAS...])
MakeTable_BEDRAS()
DisplayStatus([Проверяю таблицу BOPER...])
MakeTable_BOPER()
DisplayStatus([Проверяю таблицу BLOSTDATA...])
MakeTable_BLOSTDATA()
DisplayStatus([])
VALIDATE DATABASE NOCONSOLE
CD (lcInitFolder)

FUNCTION MakeTable_DOKUM
***** Table setup for DOKUM *****
If !FILE('DOKUM.DBF')
DisplayStatus([Создаю таблицу DOKUM.DBF...])
REMOVE TABLE DOKUM
CREATE TABLE 'DOKUM.DBF' NAME 'DOKUM' (;
 ID I NOT NULL,;
 NAMEOPER C(50) NOT NULL)
USE
EndIF
USE DOKUM
If FILE('INCLUDE\DOKUM.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\DOKUM.TXT DELIMITED WITH TAB
EndIF

***** Create each index for DOKUM *****
USE DOKUM EXCLUSIVE
If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс DOKUM.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON ID TAG ID
EndIF
USE

***** Change properties for DOKUM *****
ENDFUNC

FUNCTION MakeTable_BSCHETA
***** Table setup for BSCHETA *****
If !FILE('BSCHETA.DBF')
DisplayStatus([Создаю таблицу BSCHETA.DBF...])
REMOVE TABLE BSCHETA
CREATE TABLE 'BSCHETA.DBF' NAME 'BSCHETA' (;
 ID N(4, 0) NOT NULL,;
 SCHET C(20) NOT NULL,;
 VIDSCH C(30) NOT NULL,;
 BANK C(40) NOT NULL)
USE
EndIF
USE BSCHETA
If FILE('INCLUDE\BSCHETA.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BSCHETA.TXT DELIMITED WITH TAB
EndIF

* Смотрим как работает;
перенос строк комментария при наличия точки с запятой;
в предыдущей строке

***** Create each index for BSCHETA *****
USE BSCHETA EXCLUSIVE && И еще;
такой вариант.

If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс BSCHETA.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON ID TAG ID
EndIF
USE

***** Change properties for BSCHETA *****
DBSETPROP('BSCHETA.SCHET', 'Field', 'InputMask', "99999999999999999999")
ENDFUNC

FUNCTION MakeTable_BAMOR  
***** Table setup for BAMOR *****
If !FILE('BAMOR.DBF')
DisplayStatus([Создаю таблицу BAMOR.DBF...])
REMOVE TABLE BAMOR
CREATE TABLE 'BAMOR.DBF' NAME 'BAMOR' (;
 ID I NOT NULL,;
 BF2 C(50) NOT NULL,;
 BF3 D NOT NULL,;
 BF4 C(40) NOT NULL,;
 BF5 D NOT NULL,;
 BF6 N(12, 2) NOT NULL,;
 BF7 N(12, 2) NOT NULL,;
 BF8 N(12, 2) NOT NULL,;
 BF9 N(7, 2) NOT NULL,;
 BF10 I NOT NULL,;
 BF11 I NOT NULL,;
 BF12 N(12, 2) NOT NULL,;
 BF13 N(12, 2) NOT NULL,;
 BF14 N(12, 2) NOT NULL,;
 BF15 N(12, 2) NOT NULL,;
 BF16 D NOT NULL,;
 BF17 N(7, 2) NOT NULL,;
 BF18 I NOT NULL,;
 BF19 C(25) NOT NULL,;
 BF20 C(50) NOT NULL,;
 BF21 C(20) NOT NULL,;
 BF22 C(20) NOT NULL,;
 BF23 C(25) NOT NULL,;
 BF24 D NOT NULL,;
 BF25 C(25) NOT NULL,;
 BF26 D NOT NULL,;
 BF27 D NOT NULL,;
 BF28 I NOT NULL,;
 BF29 I NOT NULL,;
 BF30 N(12, 2) NOT NULL,;
 BF31 N(12, 2) NOT NULL,;
 BF32 N(12, 2) NOT NULL,;
 BF33 N(12, 2) NOT NULL,;
 BF34 N(12, 2) NOT NULL,;
 BF35 N(12, 2) NOT NULL)
USE
EndIF
USE BAMOR
If FILE('INCLUDE\BAMOR.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BAMOR.TXT DELIMITED WITH TAB
EndIF

***** Change properties for BAMOR *****
ENDFUNC

FUNCTION MakeTable_BUHBOOK
***** Table setup for BUHBOOK *****
If !FILE('BUHBOOK.DBF')
DisplayStatus([Создаю таблицу BUHBOOK.DBF...])
REMOVE TABLE BUHBOOK
CREATE TABLE 'BUHBOOK.DBF' NAME 'BUHBOOK' (;
 ID I NOT NULL,;
 OPER I NOT NULL,;
 DATE D NOT NULL,;
 TIP I NOT NULL,;
 NUMDOK C(10) NOT NULL,;
 DOKUM I NOT NULL,;
 DATE2 D NOT NULL,;
 SUMMA N(12, 2) NOT NULL,;
 NONAL I NOT NULL,;
 ISKL L NOT NULL,;
 ISKL2 L NOT NULL,;
 OBLSUMMA N(12, 2) NOT NULL)
USE
EndIF
USE BUHBOOK
If FILE('INCLUDE\BUHBOOK.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BUHBOOK.TXT DELIMITED WITH TAB
EndIF

***** Create each index for BUHBOOK *****
USE BUHBOOK EXCLUSIVE
If TAGCOUNT()=0 OR TAGNO([DATE])=0 OR !SYS(14, TAGNO([DATE]))==[DATE]
DisplayStatus([Создаю индекс BUHBOOK.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON DATE TAG DATE
EndIF
If TAGCOUNT()=0 OR TAGNO([DATE2])=0 OR !SYS(14, TAGNO([DATE2]))==[DATE2]
DisplayStatus([Создаю индекс BUHBOOK.CDX...])
INDEX ON DATE2 TAG DATE2
EndIF
If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс BUHBOOK.CDX...])
INDEX ON ID TAG ID
EndIF
If TAGCOUNT()=0 OR TAGNO([SUMMA])=0 OR !SYS(14, TAGNO([SUMMA]))==[SUMMA]
DisplayStatus([Создаю индекс BUHBOOK.CDX...])
INDEX ON SUMMA TAG SUMMA
EndIF
USE

***** Change properties for BUHBOOK *****
ENDFUNC

FUNCTION MakeTable_BGRAMOR
***** Table setup for BGRAMOR *****
If !FILE('BGRAMOR.DBF')
DisplayStatus([Создаю таблицу BGRAMOR.DBF...])
REMOVE TABLE BGRAMOR
CREATE TABLE 'BGRAMOR.DBF' NAME 'BGRAMOR' (;
 ID I NOT NULL,;
 NAMEGRUPP C(75) NOT NULL,;
 NOGRUPP I NOT NULL,;
 NAMEPODRRU C(250) NOT NULL,;
 NOPODRUPP I NOT NULL)
USE
EndIF
USE BGRAMOR
If FILE('INCLUDE\BGRAMOR.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BGRAMOR.TXT DELIMITED WITH TAB
EndIF

***** Create each index for BGRAMOR *****
USE BGRAMOR EXCLUSIVE
If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс BGRAMOR.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON ID TAG ID
EndIF
USE

***** Change properties for BGRAMOR *****
ENDFUNC

FUNCTION MakeTable_BISKL
***** Table setup for BISKL *****
If !FILE('BISKL.DBF')
DisplayStatus([Создаю таблицу BISKL.DBF...])
REMOVE TABLE BISKL
CREATE TABLE 'BISKL.DBF' NAME 'BISKL' (;
 ID I NOT NULL,;
 NAME C(250) NOT NULL)
USE
EndIF
USE BISKL
If FILE('INCLUDE\BISKL.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BISKL.TXT DELIMITED WITH TAB
EndIF

***** Create each index for BISKL *****
USE BISKL EXCLUSIVE
If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс BISKL.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON ID TAG ID
EndIF
USE

***** Change properties for BISKL *****
ENDFUNC

FUNCTION MakeTable_BEDRAS
***** Table setup for BEDRAS *****
If !FILE('BEDRAS.DBF')
DisplayStatus([Создаю таблицу BEDRAS.DBF...])
REMOVE TABLE BEDRAS
CREATE TABLE 'BEDRAS.DBF' NAME 'BEDRAS' (;
 BEDF N(12, 2) NULL DEFAULT 0.00,;
 BEDF2 N(12, 2) NULL DEFAULT 0.00,;
 BEDF3 N(12, 2) NULL DEFAULT 0.00,;
 BEDF4 N(12, 2) NULL DEFAULT 0.00,;
 BEDF5 N(12, 2) NULL DEFAULT 0.00,;
 BEDF6 N(12, 2) NULL DEFAULT 0.00,;
 BEDF7 N(12, 2) NULL DEFAULT 0.00,;
 BEDF8 N(12, 2) NULL DEFAULT 0.00,;
 BEDF9 N(12, 2) NULL DEFAULT 0.00,;
 BEDF10 N(12, 2) NULL DEFAULT 0.00,;
 BEDF11 N(12, 2) NULL DEFAULT 0.00,;
 BEDF12 N(12, 2) NULL DEFAULT 0.00,;
 BEDF13 N(12, 2) NULL DEFAULT 0.00,;
 BEDF14 N(12, 2) NULL DEFAULT 0.00,;
 BEDF15 N(12, 2) NULL DEFAULT 0.00,;
 BEDF16 N(12, 2) NULL DEFAULT 0.00,;
 BEDF17 N(12, 2) NULL DEFAULT 0.00,;
 BEDF18 N(12, 2) NULL DEFAULT 0.00,;
 BEDF19 N(12, 2) NULL DEFAULT 0.00,;
 BEDF20 N(12, 2) NULL DEFAULT 0.00,;
 BEDF21 N(12, 2) NULL DEFAULT 0.00,;
 BEDF22 N(12, 2) NULL DEFAULT 0.00,;
 BEDF23 N(12, 2) NULL DEFAULT 0.00,;
 BEDF24 N(12, 2) NULL DEFAULT 0.00,;
 BEDF25 D NOT NULL,;
 BEDF26 D NOT NULL,;
 BEDF27 D NOT NULL,;
 BEDF28 D NOT NULL,;
 BEDF29 N(12, 2) NULL DEFAULT 0.00,;
 BEDF30 N(12, 2) NULL DEFAULT 0.00,;
 BEDF31 N(12, 2) NULL DEFAULT 0.00,;
 BEDF32 N(12, 2) NULL DEFAULT 0.00,;
 BEDF33 N(12, 2) NULL DEFAULT 0.00,;
 BEDF34 N(12, 2) NULL DEFAULT 0.00,;
 BEDF35 N(12, 2) NULL DEFAULT 0.00,;
 BEDF36 N(12, 2) NULL DEFAULT 0.00)
USE
EndIF
USE BEDRAS
If FILE('INCLUDE\BEDRAS.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BEDRAS.TXT DELIMITED WITH TAB
EndIF

***** Change properties for BEDRAS *****
ENDFUNC

FUNCTION MakeTable_BOPER
***** Table setup for BOPER *****
If !FILE('BOPER.DBF')
DisplayStatus([Создаю таблицу BOPER.DBF...])
REMOVE TABLE BOPER
CREATE TABLE 'BOPER.DBF' NAME 'BOPER' (;
 ID I NOT NULL,;
 NAMEOPER C(254) NOT NULL)
USE
EndIF
USE BOPER
If FILE('INCLUDE\BOPER.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BOPER.TXT DELIMITED WITH TAB
EndIF

***** Create each index for BOPER *****
USE BOPER EXCLUSIVE
If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс BOPER.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON ID TAG ID
EndIF
USE

***** Change properties for BOPER *****
ENDFUNC

FUNCTION MakeTable_BLOSTDATA
***** Table setup for BLOSTDATA *****
If !FILE('BLOSTDATA.DBF')
DisplayStatus([Создаю таблицу BLOSTDATA.DBF...])
REMOVE TABLE BLOSTDATA
CREATE TABLE 'BLOSTDATA.DBF' NAME 'BLOSTDATA' (;
 F03_01 N(9, 2) NOT NULL,;
 F03_02 N(9, 2) NOT NULL,;
 F03_03 N(9, 2) NOT NULL,;
 F03_04 N(9, 2) NOT NULL,;
 F04_01 N(9, 2) NOT NULL,;
 F04_02 N(9, 2) NOT NULL,;
 F04_03 N(9, 2) NOT NULL,;
 F04_04 N(9, 2) NOT NULL)
USE
EndIF
USE BLOSTDATA
If FILE('INCLUDE\BLOSTDATA.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BLOSTDATA.TXT DELIMITED WITH TAB
EndIF

***** Change properties for BLOSTDATA *****
ENDFUNC


FUNCTION DisplayStatus(lcMessage)
_SCREEN.ActiveForm.Info.Caption=lcMessage
ENDFUNC



Н-да, придется еще поработать smile.gif

Это сообщение отредактировал(а) Cashey - 15.10.2004, 20:21


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
sergejzr
Дата 15.10.2004, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 1
Всего: 360



Пока что надо ручками {code=sql} на {code=foxpro} менять smile.gif

Код

* *********************************************************
* *
* * 12.04.2004             BUHDATA.DBC             14:22:26
* *
* *********************************************************
* *
* * Description:
* * This program was automatically generated by GENDBC
* * Version 2.26.67
* *
* *********************************************************


LPARAMETERS tcFolder

&&lcInitFolder=ALLTRIM(SYS(5)-CURDIR())
&&&If !DIRECTORY(tcFolder)
&&MD (tcFolder)
&&EndIF

&&CD (tcFolder)

&=ChkNullFiles()
DisplayStatus([Проверяю базу данных BUHDATA.DBC...])
&&CLOSE DATA ALL;
If !FILE('BUHDATA.DBC');
CREATE DATABASE 'BUHDATA.DBC';
Else;
OPEN DATABASE 'BUHDATA.DBC' EXCLUSIVE
EndIF
DisplayStatus([Проверяю таблицу DOKUM...])
MakeTable_DOKUM()
DisplayStatus([Проверяю таблицу BSCHETA...])
MakeTable_BSCHETA()
DisplayStatus([Проверяю таблицу BAMOR...])
MakeTable_BAMOR()
DisplayStatus([Проверяю таблицу BUHBOOK...])
MakeTable_BUHBOOK()
DisplayStatus([Проверяю таблицу BGRAMOR...])
MakeTable_BGRAMOR()
DisplayStatus([Проверяю таблицу BISKL...])
MakeTable_BISKL()
DisplayStatus([Проверяю таблицу BEDRAS...])
MakeTable_BEDRAS()
DisplayStatus([Проверяю таблицу BOPER...])
MakeTable_BOPER()
DisplayStatus([Проверяю таблицу BLOSTDATA...])
MakeTable_BLOSTDATA()
DisplayStatus([])
VALIDATE DATABASE NOCONSOLE
CD (lcInitFolder)

FUNCTION MakeTable_DOKUM
***** Table setup for DOKUM *****
If !FILE('DOKUM.DBF')
DisplayStatus([Создаю таблицу DOKUM.DBF...])
REMOVE TABLE DOKUM
CREATE TABLE 'DOKUM.DBF' NAME 'DOKUM' (;
 ID I NOT NULL,;
 NAMEOPER C(50) NOT NULL)
USE
EndIF
USE DOKUM
If FILE('INCLUDE\DOKUM.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\DOKUM.TXT DELIMITED WITH TAB
EndIF

***** Create each index for DOKUM *****
USE DOKUM EXCLUSIVE
If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс DOKUM.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON ID TAG ID
EndIF
USE

***** Change properties for DOKUM *****
ENDFUNC

FUNCTION MakeTable_BSCHETA
***** Table setup for BSCHETA *****
If !FILE('BSCHETA.DBF')
DisplayStatus([Создаю таблицу BSCHETA.DBF...])
REMOVE TABLE BSCHETA
CREATE TABLE 'BSCHETA.DBF' NAME 'BSCHETA' (;
 ID N(4, 0) NOT NULL,;
 SCHET C(20) NOT NULL,;
 VIDSCH C(30) NOT NULL,;
 BANK C(40) NOT NULL)
USE
EndIF
USE BSCHETA
If FILE('INCLUDE\BSCHETA.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BSCHETA.TXT DELIMITED WITH TAB
EndIF

***** Create each index for BSCHETA *****
USE BSCHETA EXCLUSIVE
If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс BSCHETA.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON ID TAG ID
EndIF
USE

***** Change properties for BSCHETA *****
DBSETPROP('BSCHETA.SCHET', 'Field', 'InputMask', "99999999999999999999")
ENDFUNC

FUNCTION MakeTable_BAMOR
***** Table setup for BAMOR *****
If !FILE('BAMOR.DBF')
DisplayStatus([Создаю таблицу BAMOR.DBF...])
REMOVE TABLE BAMOR
CREATE TABLE 'BAMOR.DBF' NAME 'BAMOR' (;
 ID I NOT NULL,;
 BF2 C(50) NOT NULL,;
 BF3 D NOT NULL,;
 BF4 C(40) NOT NULL,;
 BF5 D NOT NULL,;
 BF6 N(12, 2) NOT NULL,;
 BF7 N(12, 2) NOT NULL,;
 BF8 N(12, 2) NOT NULL,;
 BF9 N(7, 2) NOT NULL,;
 BF10 I NOT NULL,;
 BF11 I NOT NULL,;
 BF12 N(12, 2) NOT NULL,;
 BF13 N(12, 2) NOT NULL,;
 BF14 N(12, 2) NOT NULL,;
 BF15 N(12, 2) NOT NULL,;
 BF16 D NOT NULL,;
 BF17 N(7, 2) NOT NULL,;
 BF18 I NOT NULL,;
 BF19 C(25) NOT NULL,;
 BF20 C(50) NOT NULL,;
 BF21 C(20) NOT NULL,;
 BF22 C(20) NOT NULL,;
 BF23 C(25) NOT NULL,;
 BF24 D NOT NULL,;
 BF25 C(25) NOT NULL,;
 BF26 D NOT NULL,;
 BF27 D NOT NULL,;
 BF28 I NOT NULL,;
 BF29 I NOT NULL,;
 BF30 N(12, 2) NOT NULL,;
 BF31 N(12, 2) NOT NULL,;
 BF32 N(12, 2) NOT NULL,;
 BF33 N(12, 2) NOT NULL,;
 BF34 N(12, 2) NOT NULL,;
 BF35 N(12, 2) NOT NULL)
USE
EndIF
USE BAMOR
If FILE('INCLUDE\BAMOR.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BAMOR.TXT DELIMITED WITH TAB
EndIF

***** Change properties for BAMOR *****
ENDFUNC

FUNCTION MakeTable_BUHBOOK
***** Table setup for BUHBOOK *****
If !FILE('BUHBOOK.DBF')
DisplayStatus([Создаю таблицу BUHBOOK.DBF...])
REMOVE TABLE BUHBOOK
CREATE TABLE 'BUHBOOK.DBF' NAME 'BUHBOOK' (;
 ID I NOT NULL,;
 OPER I NOT NULL,;
 DATE D NOT NULL,;
 TIP I NOT NULL,;
 NUMDOK C(10) NOT NULL,;
 DOKUM I NOT NULL,;
 DATE2 D NOT NULL,;
 SUMMA N(12, 2) NOT NULL,;
 NONAL I NOT NULL,;
 ISKL L NOT NULL,;
 ISKL2 L NOT NULL,;
 OBLSUMMA N(12, 2) NOT NULL)
USE
EndIF
USE BUHBOOK
If FILE('INCLUDE\BUHBOOK.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BUHBOOK.TXT DELIMITED WITH TAB
EndIF

***** Create each index for BUHBOOK *****
USE BUHBOOK EXCLUSIVE
If TAGCOUNT()=0 OR TAGNO([DATE])=0 OR !SYS(14, TAGNO([DATE]))==[DATE]
DisplayStatus([Создаю индекс BUHBOOK.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON DATE TAG DATE
EndIF
If TAGCOUNT()=0 OR TAGNO([DATE2])=0 OR !SYS(14, TAGNO([DATE2]))==[DATE2]
DisplayStatus([Создаю индекс BUHBOOK.CDX...])
INDEX ON DATE2 TAG DATE2
EndIF
If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс BUHBOOK.CDX...])
INDEX ON ID TAG ID
EndIF
If TAGCOUNT()=0 OR TAGNO([SUMMA])=0 OR !SYS(14, TAGNO([SUMMA]))==[SUMMA]
DisplayStatus([Создаю индекс BUHBOOK.CDX...])
INDEX ON SUMMA TAG SUMMA
EndIF
USE

***** Change properties for BUHBOOK *****
ENDFUNC

FUNCTION MakeTable_BGRAMOR
***** Table setup for BGRAMOR *****
If !FILE('BGRAMOR.DBF')
DisplayStatus([Создаю таблицу BGRAMOR.DBF...])
REMOVE TABLE BGRAMOR
CREATE TABLE 'BGRAMOR.DBF' NAME 'BGRAMOR' (;
 ID I NOT NULL,;
 NAMEGRUPP C(75) NOT NULL,;
 NOGRUPP I NOT NULL,;
 NAMEPODRRU C(250) NOT NULL,;
 NOPODRUPP I NOT NULL)
USE
EndIF
USE BGRAMOR
If FILE('INCLUDE\BGRAMOR.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BGRAMOR.TXT DELIMITED WITH TAB
EndIF

***** Create each index for BGRAMOR *****
USE BGRAMOR EXCLUSIVE
If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс BGRAMOR.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON ID TAG ID
EndIF
USE

***** Change properties for BGRAMOR *****
ENDFUNC

FUNCTION MakeTable_BISKL
***** Table setup for BISKL *****
If !FILE('BISKL.DBF')
DisplayStatus([Создаю таблицу BISKL.DBF...])
REMOVE TABLE BISKL
CREATE TABLE 'BISKL.DBF' NAME 'BISKL' (;
 ID I NOT NULL,;
 NAME C(250) NOT NULL)
USE
EndIF
USE BISKL
If FILE('INCLUDE\BISKL.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BISKL.TXT DELIMITED WITH TAB
EndIF

***** Create each index for BISKL *****
USE BISKL EXCLUSIVE
If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс BISKL.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON ID TAG ID
EndIF
USE

***** Change properties for BISKL *****
ENDFUNC

FUNCTION MakeTable_BEDRAS
***** Table setup for BEDRAS *****
If !FILE('BEDRAS.DBF')
DisplayStatus([Создаю таблицу BEDRAS.DBF...])
REMOVE TABLE BEDRAS
CREATE TABLE 'BEDRAS.DBF' NAME 'BEDRAS' (;
 BEDF N(12, 2) NULL DEFAULT 0.00,;
 BEDF2 N(12, 2) NULL DEFAULT 0.00,;
 BEDF3 N(12, 2) NULL DEFAULT 0.00,;
 BEDF4 N(12, 2) NULL DEFAULT 0.00,;
 BEDF5 N(12, 2) NULL DEFAULT 0.00,;
 BEDF6 N(12, 2) NULL DEFAULT 0.00,;
 BEDF7 N(12, 2) NULL DEFAULT 0.00,;
 BEDF8 N(12, 2) NULL DEFAULT 0.00,;
 BEDF9 N(12, 2) NULL DEFAULT 0.00,;
 BEDF10 N(12, 2) NULL DEFAULT 0.00,;
 BEDF11 N(12, 2) NULL DEFAULT 0.00,;
 BEDF12 N(12, 2) NULL DEFAULT 0.00,;
 BEDF13 N(12, 2) NULL DEFAULT 0.00,;
 BEDF14 N(12, 2) NULL DEFAULT 0.00,;
 BEDF15 N(12, 2) NULL DEFAULT 0.00,;
 BEDF16 N(12, 2) NULL DEFAULT 0.00,;
 BEDF17 N(12, 2) NULL DEFAULT 0.00,;
 BEDF18 N(12, 2) NULL DEFAULT 0.00,;
 BEDF19 N(12, 2) NULL DEFAULT 0.00,;
 BEDF20 N(12, 2) NULL DEFAULT 0.00,;
 BEDF21 N(12, 2) NULL DEFAULT 0.00,;
 BEDF22 N(12, 2) NULL DEFAULT 0.00,;
 BEDF23 N(12, 2) NULL DEFAULT 0.00,;
 BEDF24 N(12, 2) NULL DEFAULT 0.00,;
 BEDF25 D NOT NULL,;
 BEDF26 D NOT NULL,;
 BEDF27 D NOT NULL,;
 BEDF28 D NOT NULL,;
 BEDF29 N(12, 2) NULL DEFAULT 0.00,;
 BEDF30 N(12, 2) NULL DEFAULT 0.00,;
 BEDF31 N(12, 2) NULL DEFAULT 0.00,;
 BEDF32 N(12, 2) NULL DEFAULT 0.00,;
 BEDF33 N(12, 2) NULL DEFAULT 0.00,;
 BEDF34 N(12, 2) NULL DEFAULT 0.00,;
 BEDF35 N(12, 2) NULL DEFAULT 0.00,;
 BEDF36 N(12, 2) NULL DEFAULT 0.00)
USE
EndIF
USE BEDRAS
If FILE('INCLUDE\BEDRAS.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BEDRAS.TXT DELIMITED WITH TAB
EndIF

***** Change properties for BEDRAS *****
ENDFUNC

FUNCTION MakeTable_BOPER
***** Table setup for BOPER *****
If !FILE('BOPER.DBF')
DisplayStatus([Создаю таблицу BOPER.DBF...])
REMOVE TABLE BOPER
CREATE TABLE 'BOPER.DBF' NAME 'BOPER' (;
 ID I NOT NULL,;
 NAMEOPER C(254) NOT NULL)
USE
EndIF
USE BOPER
If FILE('INCLUDE\BOPER.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BOPER.TXT DELIMITED WITH TAB
EndIF

***** Create each index for BOPER *****
USE BOPER EXCLUSIVE
If TAGCOUNT()=0 OR TAGNO([ID])=0 OR !SYS(14, TAGNO([ID]))==[ID]
DisplayStatus([Создаю индекс BOPER.CDX...])
SET COLLATE TO 'MACHINE'
INDEX ON ID TAG ID
EndIF
USE

***** Change properties for BOPER *****
ENDFUNC

FUNCTION MakeTable_BLOSTDATA
***** Table setup for BLOSTDATA *****
If !FILE('BLOSTDATA.DBF')
DisplayStatus([Создаю таблицу BLOSTDATA.DBF...])
REMOVE TABLE BLOSTDATA
CREATE TABLE 'BLOSTDATA.DBF' NAME 'BLOSTDATA' (;
 F03_01 N(9, 2) NOT NULL,;
 F03_02 N(9, 2) NOT NULL,;
 F03_03 N(9, 2) NOT NULL,;
 F03_04 N(9, 2) NOT NULL,;
 F04_01 N(9, 2) NOT NULL,;
 F04_02 N(9, 2) NOT NULL,;
 F04_03 N(9, 2) NOT NULL,;
 F04_04 N(9, 2) NOT NULL)
USE
EndIF
USE BLOSTDATA
If FILE('INCLUDE\BLOSTDATA.TXT') AND RECCOUNT()=0
APPEND FROM INCLUDE\BLOSTDATA.TXT DELIMITED WITH TAB
EndIF

***** Change properties for BLOSTDATA *****
ENDFUNC


FUNCTION DisplayStatus(lcMessage)
_SCREEN.ActiveForm.Info.Caption=lcMessage
ENDFUNC


Это сообщение отредактировал(а) sergej.z - 15.10.2004, 21:31


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Foxpro/Clipper/Dbase"
MoLeX

Запрещается!

1. Публиковать ссылки для чисто рекламных целей.

2. Оффтопить, флеймить, говорить не культурно.

Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему.

Задавайте вопросы правильно - как спросите, так вам и ответят.

Разрешено!

Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил.

Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы.

P.S. Размещение рекламы будет строго наказываться!



Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.