home *** CD-ROM | disk | FTP | other *** search
- *******************
-
- PROCEDURE Make_dbf
-
- PARAMETERS p, d, e
-
- tdbf = SPACE(12)
- ret_to = LTRIM(TRIM(STR(SELECT())))
- SELECT 0
- tdbf_row = ROW()
- tdbf_col = COL()
- code_out = .F.
- code_name = SPACE(8)
- old_color = SETCOLOR()
-
- IF PCOUNT() <> 3 .OR. TYPE("p") <> "A"
- DECLARE p[20], d[200], e[20]
- disp_at = 5
- IF !MAKE_DBF1() && If FALSE, then abort process!
- @ tdbf_row, tdbf_col SAY ""
- RETURN
- ENDIF
- ELSE
- disp_at = 5
- ENDIF
- write2_it = SPACE(8)
-
- IF code_out
- PUSHSCREEN(2,20,4,60,.T.,.T.)
- @ 3,24 SAY "Generating Code as well!!!"
- ENDIF
-
- DO Make_it WITH p, d, e, disp_at
-
- IF code_out
- POPSCREEN(2,20,4,60)
- ENDIF
-
- IF FILE("Sstback.dbf")
- SET COLOR TO W+/B
- PUSHSCREEN(2, 20, 4, 60, .T., .T.)
- @ 3,23 SAY " Appending Data!"
- USE (tdbf)
- APPEND FROM Sstback WHILE COUNTING(3,45)
- USE
- ERASE Sstback.dbf
- POPSCREEN(2, 20, 4, 60)
- ENDIF
-
- SETCOLOR(old_color)
- SELECT &ret_to.
- @ tdbf_row, tdbf_col SAY ""
-
- ********************
-
- FUNCTION Make_dbf1
-
- AFILL(p, "", 1, 20)
- AFILL(e, "", 1, 20)
- AFILL(d, "", 1, 200)
-
- old_color = SETCOLOR()
-
- IF ISCOLOR() .AND. !(IF(TYPE("scrmono")="U", .T., scrmono))
- SET COLOR TO W/B
- ELSE
- SETCOLOR(REVERSE(old_color))
- ENDIF
- PUSHSCREEN(2,20,4,60,.T.,.T.)
- @ 3,25 SAY "Enter DBF Name =>" GET tdbf PICT "!!!!!!!!!!!!"
- READ
- IF EMPTY(tdbf)
- POPSCREEN(2, 20, 4, 60)
- SETCOLOR(old_color)
- RETURN(.F.)
- ENDIF
-
- CLEAR_AREA(2,20,4,60)
- tdbf = IF(EMPTY(AT(".", LTRIM(TRIM(tdbf)))), LTRIM(TRIM(tdbf)) + ".DBF", LTRIM(TRIM(tdbf)))
-
- IF FILE(tdbf)
- IF FILESIZE(tdbf) > 2*DISKSPACE() .OR. EMPTY(tdbf)
- @ 3,24 SAY "Not enough room on disk. Any Key to Continue..."
- INKEY(0)
- POPSCREEN(2,20,4,60)
- RETURN(.F.)
- ELSE
- USE (tdbf)
- @ 3,24 SAY "Making backup. Copy "
- COPY TO Sstback WHILE COUNTING(3,45)
- CLEAR_AREA(2,20,4,60)
- @ 3,24 SAY "Now Getting Information...."
- DECLARE fdnm[FCOUNT()], fdtp[FCOUNT()], fdwd[FCOUNT()], fddc[FCOUNT()]
- AFIELDS(fdnm, fdtp, fdwd, fddc)
- cnt_2_it = 1
- FOR now_2_it = 1 TO LEN(fdnm)
- d[LEVEL(cnt_2_it, 1)] = fdnm[now_2_it]
- d[LEVEL(cnt_2_it, 2)] = fdtp[now_2_it]
- d[LEVEL(cnt_2_it, 3)] = fdwd[now_2_it]
- d[LEVEL(cnt_2_it, 4)] = fddc[now_2_it]
- cnt_2_it = cnt_2_it + 1
- NEXT
- KEYBOARD REPLICATE( CHR(13), (4 * LEN(fdnm) ) )
- ENDIF
- ENDIF
- p[1] = TRIM(UPPERLOWER(tdbf))
- tdbf = p[1]
- dbfx = 1
- STORE "" TO saying, pictre, valida, namestring
- POPSCREEN(2, 20, 4, 60)
-
- PUSHSCREEN(1,20,4,60,.T.,.T.)
- PUSHSCREEN(5,10,15,70,.T.,.T.)
- SET CONFIRM ON
-
- @ 2,23 SAY "Database working on &tdbf."
- DO WHILE .T.
-
- SET KEY 27 TO Get_out
- SET KEY 18 TO Up_field
- SET KEY 5 TO Up_one
- SET KEY 6 TO Go_down
- SET KEY 1 TO Go_top
-
- continue = .T.
- f_cnt = LTRIM(TRIM(TRANSFORM( dbfx, "999")))
- @ 3,23 SAY "Field &f_cnt. : "
- column = COL()
- FOR dbfy = 1 TO 4
- DO Dbfset
- temp_get = d[LEVEL(dbfx,dbfy)]
- RID(3, column, saying + " ")
- @ 3,column SAY saying GET temp_get PICT pictre VALID &valida.
- READ
- IF LASTKEY() = 3
- EXIT
- ENDIF
- IF LASTKEY() <> 27
- d[LEVEL(dbfx,dbfy)] = temp_get
- IF dbfy = 1 && The name
- IF EMPTY(temp_get)
- KEYBOARD CHR(3)
- dbfy = -1
- continue = .F.
- ELSE
- DO Putstring WITH temp_get, dbfx, dbfy
- ENDIF
- ENDIF
- ENDIF
- dbfy = IF(dbfy < 0, 0, dbfy)
- NEXT
- IF LASTKEY() = 3
- IF !continue
- EXIT
- ENDIF
- ENDIF
- dbfx = IF(dbfx < 0, 0, dbfx)
- dbfx = dbfx + 1
- ENDDO
- POPSCREEN(5,10,15,70)
- DO Make_dbf2
- CLEAR_AREA(1,20,4,60)
- @ 2,23 SAY "Enter Row Number for Interactive"
- @ 3,23 SAY "Display of Messages => " GET disp_at PICT "##" VALID (disp_at >= 0 .AND. disp_at <= 24)
- READ
- CLEAR_AREA(1,20,4,60)
- @ 2,24 SAY "Shall I Generate This in Code? "
- code_out = PROMPT()
- IF code_out
- @ 3,24 SAY "Then Enter .PRG name = " GET code_name PICT "!!!!!!!!!!"
- READ
- code_out = !EMPTY(code_name)
- code_name = UPPERLOWER(code_name)
- ENDIF
-
- CLEAR_AREA(1,20,4,60)
- @ 2,31 SAY "Please Push Any Key"
- @ 3,31 SAY " to Continue. "
- INKEY(0)
- POPSCREEN(1,20,4,60)
- SETCOLOR(old_color)
- RETURN(.T.)
-
- ********************
-
- PROCEDURE Dbfset
-
- DO CASE
- CASE dbfy = 1
- saying = " Name =>"
- pictre = "!!!!!!!!!!"
- valida = "GOODNAME(temp_get, dbfx, NO_BLANK(temp_get))"
- IF EMPTY(d[LEVEL(dbfx,dbfy)])
- d[LEVEL(dbfx,dbfy)] = SPACE(10)
- ENDIF
- CASE dbfy = 2
- saying = " Type =>"
- pictre = "!"
- valida = "temp_get$'NDMCL'"
- IF EMPTY(d[LEVEL(dbfx,dbfy)])
- d[LEVEL(dbfx,dbfy)] = " "
- ENDIF
- CASE dbfy = 3
- saying = " Length =>"
- pictre = "####"
- DO CASE
- CASE d[LEVEL(dbfx,dbfy-1)] = "N"
- IF EMPTY(d[LEVEL(dbfx,dbfy)])
- d[LEVEL(dbfx,dbfy)] = 0
- ENDIF
- valida = "temp_get > 0 .AND. temp_get <= 19"
- CASE d[LEVEL(dbfx,dbfy-1)] = "D"
- IF EMPTY(d[LEVEL(dbfx,dbfy)])
- d[LEVEL(dbfx,dbfy)] = 8
- ENDIF
- valida = "temp_get = 8"
- KEYBOARD CHR(13) + CHR(13)
- CASE d[LEVEL(dbfx,dbfy-1)] = "M"
- IF EMPTY(d[LEVEL(dbfx,dbfy)])
- d[LEVEL(dbfx,dbfy)] = 10
- ENDIF
- valida = "temp_get = 10"
- KEYBOARD CHR(13) + CHR(13)
- CASE d[LEVEL(dbfx,dbfy-1)] = "L"
- IF EMPTY(d[LEVEL(dbfx,dbfy)])
- d[LEVEL(dbfx,dbfy)] = 1
- ENDIF
- valida = "temp_get = 1"
- KEYBOARD CHR(13) + CHR(13)
- OTHERWISE
- IF EMPTY(d[LEVEL(dbfx,dbfy)])
- d[LEVEL(dbfx,dbfy)] = 0
- ENDIF
- valida = "temp_get > 0"
- ENDCASE
- OTHERWISE
- saying = "Decimals =>"
- pictre = "##"
- IF EMPTY(d[LEVEL(dbfx,dbfy)])
- d[LEVEL(dbfx,dbfy)] = 0
- ENDIF
- DO CASE
- CASE d[LEVEL(dbfx,dbfy-2)] = "N"
- IF d[LEVEL(dbfx,dbfy-1)] <= 2
- valida = "temp_get >= 0 .AND. temp_get <= 1"
- ELSE
- valida = "temp_get >= 0 .AND. temp_get <= d[LEVEL(dbfx,dbfy-1)] - 2"
- ENDIF
- OTHERWISE
- valida = "temp_get = 0"
- ENDCASE
- ENDCASE
-
- ********************
-
- FUNCTION Level
-
- PARAMETERS l1, l2
-
- RETURN((l1 * 4) - 4 + l2)
-
- ********************
-
- FUNCTION No_blank
-
- PARAMETERS no1
-
- the_one = LTRIM(TRIM(no1))
- FOR going = 1 TO LEN(the_one)
- IF SUBSTR(the_one, going, 1)$"!@#$%^&*()-=+\|/?><.,`~[]{}:; "
- RETURN(.F.)
- ENDIF
- NEXT
- RETURN(.T.)
-
- ********************
-
- PROCEDURE Get_out
-
- KEYBOARD CHR(3)
- continue = .F.
-
- ********************
-
- PROCEDURE Up_field
-
- SET KEY 27 TO
- KEYBOARD CHR(27)
- dbfy = 5
- dbfx = dbfx - 2
-
- ********************
-
- PROCEDURE Go_down
-
- KEYBOARD CHR(13) + CHR(13) + CHR(13) + CHR(13)
-
- ********************
-
- PROCEDURE Go_top
-
- KEYBOARD CHR(3)
- dbfx = -1
-
- ********************
-
- PROCEDURE Up_one
-
- SET KEY 27 TO
- KEYBOARD CHR(27)
- dbfy = dbfy - 2
-
- ********************
-
- PROCEDURE Putstring
-
- PARAMETERS pstring, pcnt, ycnt
-
- pstring = FILL_OUT(pstring, 10)
- IF LEN(namestring) < (pcnt * 10) - 9
- namestring = namestring + pstring
- ELSE
- one_momen = FILL_OUT(d[LEVEL(dbfx,1)], 10)
- namestring = STRTRAN(namestring, one_momen, pstring)
- ENDIF
- base = dbfx - 1
- IF (INT(base / 4) + 6 > 14)
- IF (15 * ((base % 4) - 1)) < 0
- SCROLL(6,11,14,69,1)
- ENDIF
- base = base - 4
- @ 14, 28 + (15 * (MODULUS(base, 4) - 1)) SAY pstring
- ELSE
- @ 7 + INT(base / 4) - 1, 28 + (15 * (MODULUS(base, 4) - 1)) SAY pstring
- ENDIF
-
- ********************
-
- FUNCTION Goodname
-
- PARAMETERS gname, gcnt, stophere
-
- IF !stophere
- RETURN(.F.)
- ENDIF
-
- IF EMPTY(namestring)
- RETURN(.T.)
- ENDIF
-
- gname = FILL_OUT(gname, 10)
-
- IF gname$namestring
- RETURN(TRIM(gname) == TRIM(SUBSTR(namestring, (gcnt * 10) - 9, 10)))
- ELSE
- RETURN(.T.)
- ENDIF
-
- ********************
-
- PROCEDURE Make_dbf2
-
- SET KEY 27 TO
- SET KEY 18 TO
- SET KEY 5 TO
- SET KEY 6 TO
- SET KEY 1 TO
- dbfx = 2
- DO WHILE .T.
- CLEAR_AREA(1,20,4,60)
- temp_ndx = SPACE(12)
- @ 3,25 SAY " Leave Blank to Exit"
- @ 2,25 SAY "Index Name => " GET temp_ndx PICT "!!!!!!!!!!!!"
- READ
- IF EMPTY(temp_ndx)
- EXIT
- ENDIF
- IF FILE(temp_ndx)
- SET INDEX TO &temp_ndx
- ndx_exp = LOWER(FILL_OUT(INDEXKEY(0), 200))
- ELSE
- temp_ndx = IF(EMPTY(AT(".", TRIM(temp_ndx))), TRIM(temp_ndx) + ".ntx", TRIM(temp_ndx))
- p[dbfx] = temp_ndx
- ndx_exp = SPACE(200)
- ENDIF
- CLEAR_AREA(1,20,4,60)
- @ 2,27 SAY "Enter the Index Expression"
- PUSHSCREEN(5,10,7,70,.T.,.T.)
- @ 6,12 SAY "=> " GET ndx_exp PICT "@S50@!" VALID MUSTFILL(ndx_exp,3,27)
- READ
- e[dbfx - 1] = UPPERLOWER(LTRIM(TRIM(ndx_exp)))
- POPSCREEN(5,10,7,70)
- dbfx = dbfx + 1
- ENDDO
-
- ********************
-
- PROCEDURE Make_it
-
- PARAMETERS the_names, the_fields, the_indexes, where_at
-
- IF code_out
- SET ALTERNATE TO &code_name..prg
- DO Writ_it_out WITH " ********************| | * Remove this line and the asterisk on the next line if adding to a file| * PROCEDURE &code_name.| |"
- ENDIF
-
- cur_area = LTRIM(TRIM(STR(SELECT())))
- SELECT 9
- master_file = LTRIM(TRIM(the_names[1]))
- the_mess = "Initializing &master_file. File.. "
- IF !EMPTY(where_at)
- IF !code_out
- @ where_at,0 SAY the_mess
- ENDIF
- ENDIF
-
- where_str = LTRIM(TRIM(STR(where_at)))
- IF code_out
- DO Writ_it_out WITH " ret_to = LTRIM(TRIM(STR(SELECT())))| SELECT 0| @ &where_str., 5 SAY [&the_mess.]| CREATE Template| USE Template"
- ENDIF
-
- IF !FILE("Template.dbf")
- CREATE Template
- USE Template
- ELSE
- USE Template
- ZAP
- ENDIF
-
- start = 1
- DO WHILE !EMPTY(the_fields[LEVEL(start, 1)])
-
- IF code_out
- write_fld = the_fields[LEVEL(start, 1)]
- write_typ = the_fields[LEVEL(start, 2)]
- write_len = LTRIM(TRIM(STR(the_fields[LEVEL(start, 3)])))
- write_dec = LTRIM(TRIM(STR(the_fields[LEVEL(start, 4)])))
- DO Writ_it_out WITH " DO Ap_it WITH [&write_fld.], [&write_typ.], &write_len., &write_dec."
- ENDIF
-
- DO Ap_it WITH the_fields[LEVEL(start, 1)], the_fields[LEVEL(start, 2)], the_fields[LEVEL(start, 3)], the_fields[LEVEL(start, 4)]
- start = start+ 1
- ENDDO
-
- IF code_out
- DO Writ_it_out WITH " USE| CREATE &master_file. FROM Template| ERASE Template.dbf| USE &master_file.| RID(&where_str., 5, [&the_mess.])"
- ENDIF
-
- USE
- IF !EMPTY(master_file)
- CREATE &master_file FROM Template
- ERASE Template.dbf
- USE (master_file)
- ENDIF
- IF !EMPTY(where_at)
- RID(where_at, 0, the_mess)
- ENDIF
- indexes = 2
-
- DO WHILE !EMPTY(the_names[indexes])
- ndx_file = the_names[indexes]
- ndx_exp = the_indexes[indexes - 1]
-
- the_mess = "Creating &ndx_file. File"
-
- IF !EMPTY(where_at)
- IF !code_out
- @ where_at - 1 + indexes, 0 SAY the_mess
- ENDIF
- INDEX ON (ndx_exp) TO (ndx_file)
- IF !code_out
- RID(where_at - 1 + indexes, 0, the_mess)
- ENDIF
- ELSE
- INDEX ON (ndx_exp) TO (ndx_file)
- ENDIF
-
- IF code_out
-
- where_str = LTRIM(TRIM(STR(INT(where_at - 1 + indexes))))
- DO Writ_it_out WITH " @ &where_str, 5 SAY [&the_mess.]| INDEX ON &ndx_exp. TO &ndx_file.| RID(&where_str, 5, [&the_mess.])"
-
- ENDIF
-
- indexes = indexes + 1
-
- ENDDO
-
- IF code_out
- DO Writ_it_out WITH " USE| SELECT &" + "ret_to."
- CLOSE ALTERNATE
- ENDIF
-
- SELECT &cur_area.
-
- * End of File