맨위로가기

비주얼 폭스프로

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

비주얼 폭스프로(VFP)는 dBase를 기반으로 하는 xBase 언어군의 데이터베이스 관리 시스템(DBMS)이자 동적 프로그래밍 언어이다. 자체 관계형 데이터베이스 엔진을 통합하여 SQL 쿼리 및 데이터 조작을 지원하며, 팻 클라이언트, 미들웨어, 웹 애플리케이션 개발에 사용되었다. 마이크로소프트는 2007년에 VFP 10 출시를 중단하고 VFP 9를 마지막 상용 버전으로 발표했다. VFP는 객체 지향 프로그래밍을 지원하며, 데이터베이스 조작, ODBC를 통한 외부 데이터베이스 접근 등의 기능을 제공한다.

더 읽어볼만한 페이지

  • 1984년 개발된 프로그래밍 언어 - MSX 베이직
    MSX BASIC은 MSX 컴퓨터를 위한 BASIC 프로그래밍 언어 및 인터프리터로, 다양한 버전과 확장을 통해 텍스트, 그래픽, 하드웨어 스프라이트, 인터럽트 기능 등을 지원하며, MSX 고유 기능을 활용하는 애드온 모듈 개발도 이루어졌다.
  • 1984년 개발된 프로그래밍 언어 - 커먼 리스프
    커먼 리스프는 1980년대 초 여러 리스프 방언 통합 시도에서 시작된 언어로, S-표현식 문법, 다양한 자료형, 일급 함수, 매크로, CLOS를 특징으로 하며, ANSI 표준으로 정의되어 다양한 분야에서 활용된다.
  • 4세대 프로그래밍 언어 - XQuery
    XQuery는 함수형 프로그래밍 패러다임을 지원하며 XPath 식 구문의 상위 집합을 포함하는 XML 데이터 추출 및 조작을 위한 쿼리 언어로서, FLWOR 식을 통해 XML 데이터 조작 및 새로운 XML 문서 구성을 지원하고 XQuery 및 XPath 데이터 모델(XDM)을 기반으로 한다.
  • 4세대 프로그래밍 언어 - SAS (소프트웨어)
    SAS는 통계 분석, 데이터 마이닝, 예측 모델링 기능을 제공하는 소프트웨어 제품군으로, 농업 데이터 분석을 위해 개발되어 다양한 산업 분야에서 활용되고 있으며 인공지능 및 머신러닝 분야로 투자를 확대하고 있다.
  • 마이크로소프트 데이터베이스 소프트웨어 - 마이크로소프트 액세스
    마이크로소프트 액세스는 1992년 출시된 데이터베이스 관리 시스템으로, 테이블, 쿼리, 폼 등을 생성하고 VBA를 통해 솔루션을 개발하며, 윈도우에서 사용 가능하고 다양한 데이터 형식과 통합된다.
  • 마이크로소프트 데이터베이스 소프트웨어 - 업사이징
    업사이징은 데이터베이스를 다른 시스템으로 마이그레이션하는 전략으로, 데이터베이스 구조와 소스 코드 리팩토링을 포함하며, 데이터 접근 인터페이스 변경, SQL 문법 변환, 객체 이름 조정, 소스 코드 재구성을 포함하여 데이터 마이그레이션 비용, 호환성, 성능 향상을 고려해야 한다.
비주얼 폭스프로 - [IT 관련 정보]에 관한 문서
일반 정보
Windows XP에서 실행되는 Visual FoxPro v9
Windows XP에서 실행되는 Visual FoxPro v9
개발사마이크로소프트
단종
최신 버전v9.0 SP2
최신 버전 출시일2007년 10월 16일
운영체제윈도우 2000
윈도우 XP
윈도우 서버 2003
플랫폼IA-32
언어IDE: 영어, 독일어, 스페인어
런타임: 위 언어 + 프랑스어, 중국어, 러시아어, 체코어, 한국어
장르통합 개발 환경
프로그래밍 언어
라이선스상용 독점
웹사이트msdn.microsoft.com/vfoxpro
추가 정보
마이크로소프트 인수앤드루 폴락에 따르면, 마이크로소프트는 폭스 소프트웨어를 인수하여 새로운 시장에 진출하려 했다.
제품 수명 주기Microsoft Visual FoxPro 9.0

2. 역사

2002년 말, 와인을 사용하여 리눅스에서 비주얼 폭스프로를 실행할 수 있다는 것이 알려졌다. 2003년, 마이크로소프트는 윈도우 이외의 환경에서 비주얼 폭스프로를 실행하는 것은 라이선스 계약 위반이라고 지적했다.[28]

2005년 12월, TIOBE의 [http://www.tiobe.com/tiobe_index/index.htm Programming Community Index]에 VFP(정확하게는 FoxPro/xBase)가 처음으로 상위 20위권에 진입했다. 이후 2007년 3월에는 19위, 2007년 8월에는 22위, 2008년 4월에는 17위를 기록했다.

2007년 3월, 마이크로소프트는 비주얼 폭스프로 10 개발 중단을 발표했다.[29] 이에 따라 2004년 12월 17일에 출시된 VFP 9가 마지막 상용 버전이 되었다. VFP 9는 서비스 팩 형태로 지원이 제공되었으며, 2005년 12월과 2007년 10월에 출시되었다.

VFP 10 개발 중단 발표와 동시에 코드명 "Sedna"라는 VFP 9 애드온이 발표되었다. Sedna는 마이크로소프트 SQL 서버 2005, 닷넷 프레임워크, 윈도우 비스타, 마이크로소프트 오피스 2007, Windows Search, Team Foundation Server (TFS) 등과의 연동 기능을 지원한다. 마이크로소프트는 Sedna를 소스 공유 라이선스로 코드플렉스에 공개했지만, VFP 핵심 부분은 비공개 소스로 유지되었다. Sedna는 2008년 1월 25일에 출시되었다.[30] 2008년 3월 현재, VFP 9 SP2(Sedna 포함)의 모든 XBase 구성 요소는 코드플렉스에서 개발용으로 사용 가능하다.

2007년 3월, 스페인어 폭스프로 커뮤니티인 [http://www.masfoxpro.com MasFoxPro]를 중심으로 풀뿌리 운동이 시작되었다. 이들은 마이크로소프트에 VFP 개발 지속 또는 전체 소스의 오픈 소스 공개를 요구했다. 2007년 4월 3일, 이 운동은 업계 언론에 보도되었으며,[31] 같은 날 마이크로소프트는 성명을 발표하여 VFP의 새로운 버전 개발은 없지만, 2015년까지 지원은 계속될 것이라고 밝혔다. 또한 오픈 소스화에 대해서는 최선의 선택이라고 언급했지만, 핵심 기술의 오픈 소스화에 대한 구체적인 계획은 발표하지 않았다.

2. 1. 폭스프로 (FoxPro)

폭스프로(FoxPro)는 텍스트 기반 절차적 프로그래밍 언어이자 DBMS이다. 당초 폭스 소프트웨어가 개발, 판매하고 나중에 마이크로소프트에 인수되었다. 지원되는 플랫폼은 도스, 마이크로소프트 윈도우, 매킨토시, 유닉스 등이 있었다.

폭스프로는 일반적으로 "xBase" 언어의 일종이며, 그 문법은 dBase 프로그래밍 언어를 기반으로 한다. xBase 언어에는 클리퍼 등이 있다. (xBase 언어의 초기 역사에 대해서는 dBASE 참고)

폭스프로는 데이터베이스 관리 시스템이지만, 테이블 간의 관계를 지원하지 않는다. 즉, 관계형 데이터베이스는 아니고, 트랜잭션 처리 능력도 없다.

최종 버전은 폭스프로 2.6이다. 그 이후는 비주얼 폭스프로로 인수되었다. 이미 단종되어 마이크로소프트도 지원하고 있지 않지만, 폭스프로 사용자 커뮤니티는 현재도 활동 중이다. 폭스프로 2.6 for UNIX (FPU26)는 Intel Binary Compatibility Standard (ibcs2) 지원 라이브러리를 사용하여 리눅스FreeBSD에 설치 가능하다.[32]

폭스프로 2는 "Rushmore"라는 최적화 엔진을 탑재하여 데이터 검색 및 업데이트 속도가 빨라졌다. Rushmore는 모든 데이터 관계 문장을 찾아 필터 식을 찾아낸다. 필터 표현식을 사용하면 동일한 표현식에 일치하는 인덱스를 찾는다. 또한 폭스프로 2는 당초 WatCOM C++로 작성되었으며, 자체 메모리 확장 기능(당시의 최신 기술)이 있었다. 폭스프로 2는 확장 메모리에 접근하고 DOS에서 관리 가능한 거의 모든 메모리를 사용할 수 있었다. HIMEM.SYS가 로드되지 않는 경우, 폭스프로 2는 자체 확장 계획을 시작하도록 되어 있었다.

'''운영 체제별 버전'''
버전FP 2.0FP 2.5FP 2.6
MS-DOS
윈도 3.1 ~ XP
매킨토시아니오
SCO 유닉스아니오아니오
리눅스 & FreeBSD아니오아니오[32]
윈도우 2000아니오아니오


2. 2. 비주얼 폭스프로 (Visual FoxPro)

비주얼 폭스프로(VFP)는 폭스프로를 기반으로 만들어진 객체 지향 프로그래밍 언어이자 데이터베이스 관리 시스템(DBMS)이다. 관계형 데이터베이스 엔진과 밀접하게 통합되어 SQL 쿼리 및 데이터 조작을 지원한다.

비주얼 폭스프로는 팻 클라이언트 응용 프로그램, 미들웨어, 웹 애플리케이션 개발에 사용될 수 있다. 다른 데이터베이스 관리 시스템과 달리, 추가적인 범용 프로그래밍 환경 없이도 자체적으로 완전한 동적 프로그래밍 언어 기능을 제공한다.

비주얼 폭스프로의 첫 버전은 3.0이었으며, 매킨토시와 윈도우를 지원했다. 이후 버전에서는 윈도우만 지원한다. 현재 비주얼 폭스프로는 COM 기반이며, 마이크로소프트는 .NET 버전 개발 계획은 없다고 발표했다.

윈도우 지원 버전
버전VFP 3.0VFP 5.0VFP 6.0VFP 7.0VFP 8.0VFP 9.0
윈도우 3.x아니오아니오아니오아니오아니오
윈도우 NT 4.0아니오[33]아니오[34]
윈도우 95실행시에만아니오[35]아니오
윈도우 98실행시에만실행시에만
윈도우 Me실행시에만실행시에만
윈도우 2000
윈도우 XP
윈도우 서버 2003??
윈도우 비스타?



2002년 말에는 Wine을 통해 리눅스에서 비주얼 폭스프로를 실행할 수 있다는 것이 시연되었다. 그러나 2003년 마이크로소프트는 윈도우 이외의 환경에서 폭스프로를 실행하는 것은 라이선스 위반이라고 주장했다.[18]

TIOBE 프로그래밍 커뮤니티 지수에서 비주얼 폭스프로는 2005년 12월 상위 20위에 처음 진입했고, 2006년 6월에는 12위로 최고점을 기록했다. 2023년 1월 현재는 21위를 기록하고 있다.

2007년 3월, 마이크로소프트는 VFP 10을 개발하지 않을 것이라고 발표했다.[19] 이에 따라 2004년 12월 17일에 출시된 VFP 9가 마지막 상용 버전이 되었다. VFP 9는 2015년 1월 13일까지 지원되었다.

마이크로소프트의 발표와 함께 코드명 "Sedna"라는 VFP 9의 확장 기능 개발이 시작되었다. Sedna는 SQL 서버 2005, .NET 프레임워크, 윈도우 비스타, 오피스 2007, 윈도우 검색, 팀 파운데이션 서버(TFS) 등과의 연동을 지원한다. Sedna는 공유 소스 라이선스로 CodePlex에 공개되었으나, VFP 핵심 코드는 비공개로 유지되었다. Sedna는 2008년 1월 25일에 출시되었다.[20]

2007년 3월 말, 스페인어를 사용하는 폭스프로 커뮤니티인 MásFoxPro에서 풀뿌리 운동이 시작되어 마이크로소프트에 비주얼 폭스프로 개발 지속 또는 오픈 소스화를 요구했다.[21] 2007년 4월 3일, 마이크로소프트는 이 청원에 대해 VFP 9의 지원을 2015년까지 계속할 것이라고 응답했다.

2. 3. 개발 중단 및 오픈 소스 노력

2002년 말, 와인을 사용하여 리눅스에서 비주얼 폭스프로(VFP)를 사용할 수 있다는 것이 알려졌다. 2003년, 마이크로소프트는 윈도우 이외의 환경에서 VFP를 실행하는 것은 라이선스 계약 위반이라고 지적했다.[28]

2007년 3월, 마이크로소프트는 비주얼 폭스프로 10 개발 중단을 발표했다.[29] 이에 따라 2004년 12월 17일에 출시된 VFP 9가 마지막 상용 버전이 되었다. VFP 9는 서비스 팩 형태로 지원이 제공되었으며, 2005년 12월과 2007년 10월에 출시되었다.

VFP 10 개발 중단 발표와 동시에 코드명 "Sedna"라는 VFP 9 애드온이 발표되었다. Sedna는 마이크로소프트 SQL 서버 2005, 닷넷 프레임워크, 윈도우 비스타, 마이크로소프트 오피스 2007, Windows Search, Team Foundation Server (TFS) 등과의 연동 기능을 지원한다. 마이크로소프트는 Sedna를 소스 공유 라이선스로 코드플렉스에 공개했지만, VFP 핵심 부분은 여전히 비공개 소스로 유지되었다. Sedna는 2008년 1월 25일에 출시되었다.[30] 2008년 3월 현재, VFP 9 SP2(Sedna 포함)의 모든 XBase 구성 요소는 코드플렉스에서 개발용으로 사용 가능하다.

2007년 3월, 스페인어 폭스프로 커뮤니티인 [http://www.masfoxpro.com MasFoxPro]를 중심으로 풀뿌리 운동이 시작되었다. 이들은 마이크로소프트에 VFP 개발 지속 또는 전체 소스의 오픈 소스 공개를 요구했다. 2007년 4월 3일, 이 운동은 업계 언론에 보도되었다.[31] 같은 날 마이크로소프트는 성명을 발표하여 VFP의 새로운 버전 개발은 없지만, 2015년까지 지원은 계속될 것이라고 밝혔다. 또한 오픈 소스화에 대해서는 최선의 선택이라고 언급했지만, 핵심 기술의 오픈 소스화에 대한 구체적인 계획은 발표하지 않았다.

3. 버전 정보

'''폭스프로 운영 체제별 버전'''
버전FP 2.0FP 2.5FP 2.6
MS-DOS
윈도우 3.1 ~ XP
매킨토시아니오
SCO 유닉스아니오아니오
리눅스 & FreeBSD아니오아니오[32]
윈도우 2000아니오아니오



'''비주얼 폭스프로 윈도우 지원 버전'''
버전VFP 3.0VFP 5.0VFP 6.0VFP 7.0VFP 8.0VFP 9.0
윈도우 3.x아니오아니오아니오아니오아니오
윈도우 NT 4.0아니오[33]아니오[34]
윈도우 95실행시에만아니오[35]아니오
윈도우 98실행시에만실행시에만
윈도우 Me실행시에만실행시에만
윈도우 2000
윈도우 XP
윈도우 서버 2003??
윈도우 비스타?



'''비주얼 폭스프로 출시일'''
버전출시일
비주얼 폭스프로 3.01995년 6월
비주얼 폭스프로 5.01996년 10월
비주얼 폭스프로 5.0a1997년 10월
비주얼 폭스프로 6.01998년 5월 18일
비주얼 폭스프로 7.02001년 6월 27일
비주얼 폭스프로 8.02003년 2월 1일
비주얼 폭스프로 8.0 서비스 팩 12003년 10월 7일
비주얼 폭스프로 92004년 12월 20일
비주얼 폭스프로 9 서비스 팩 12005년 12월 8일
비주얼 폭스프로 9 서비스 팩 22007년 10월 16일


4. 주요 특징

비주얼 폭스프로(VFP)는 관계형 데이터베이스 엔진과 밀접하게 결합된 동적 프로그래밍 언어이다. VFP는 FoxPro의 xBase 기능을 확장하여 SQL 쿼리 및 데이터 조작을 추가로 지원한다. 다른 데이터베이스 관리 시스템과 달리, VFP는 자체적으로 완전한 기능을 갖춘 프로그래밍 언어이므로 별도의 범용 프로그래밍 환경이 필요하지 않다. 팻 클라이언트 응용 프로그램 개발뿐만 아니라 미들웨어나 웹 응용 프로그램 개발도 가능하다.[1]

VFP의 첫 번째 버전은 3.0이었으며, 초기에는 매킨토시와 윈도우 플랫폼을 모두 지원했으나, 이후 버전에서는 윈도우만 지원하게 되었다. 현재 VFP는 COM 기반이며, 마이크로소프트닷넷 버전 개발 계획은 없다고 밝혔다.

4. 1. 객체 지향 프로그래밍 지원

비주얼 폭스프로는 클래스, 객체, 상속, 다형성 등 객체 지향 프로그래밍 개념을 지원한다.[17] 코드 예제를 통해 클래스와 객체를 정의하고 사용하는 방법을 확인할 수 있다.

```visualfoxpro

loForm = CREATEOBJECT("HiForm")

loForm.Show(1)

DEFINE CLASS HiForm AS Form

AutoCenter = .T.

Caption = "Hello, World"

ADD OBJECT lblHi as Label WITH ;

Caption = "Hello, World!"

ENDDEFINE

```

위 코드는 `HiForm`이라는 클래스를 정의하고, `loForm`이라는 객체를 생성하여 화면에 표시하는 예제이다. `HiForm` 클래스는 `Form` 클래스를 상속받으며, `AutoCenter`와 `Caption` 속성을 가지고 있다. 또한 `lblHi`라는 `Label` 객체를 포함하고 있다.

```visualfoxpro

loMine = CREATEOBJECT("MyClass")

? loMine.cProp1 && 이것은 작동합니다. (Double-ampersand는 줄 끝 주석을 표시합니다)

? loMine.cProp2 && 프로그램 오류: CPROP2 속성은 외부에서 숨겨져 있기 때문에 찾을 수 없습니다.

? loMine.MyMethod1() && 이것은 작동합니다.

? loMine.MyMethod2() && 프로그램 오류: MYMETHOD2 속성은 외부에서 숨겨져 있기 때문에 찾을 수 없습니다.

DEFINE CLASS MyClass AS Custom

cProp1 = "My Property" && 이것은 공개 속성입니다

HIDDEN cProp2 && 이것은 비공개 (숨겨진) 속성입니다

dProp3 = {} && 또 다른 공개 속성

PROCEDURE Init() && 클래스 생성자

This.cProp2 = "This is a hidden property."

PROCEDURE dProp3_Access && 속성 접근자

RETURN DATE()

PROCEDURE dProp3_Assign(vNewVal) && 속성 설정자는 속성 이름에 "_assign" 태그를 사용합니다

IF VARTYPE(vNewVal) = "D"

THIS.dProp3 = vNewVal

ENDIF

PROCEDURE MyMethod1()

  • 이것은 공개 메서드이며, 숨겨진 속성의 값을 반환하는 숨겨진 메서드를 호출합니다.

RETURN This.MyMethod2()

HIDDEN PROCEDURE MyMethod2() && 이것은 비공개 (숨겨진) 메서드입니다

RETURN This.cProp2

ENDDEFINE

```

위 코드는 `MyClass`라는 클래스를 정의하고, `loMine`이라는 객체를 생성하여 속성과 메서드를 호출하는 예제이다. `MyClass`는 `cProp1` (공개), `cProp2` (비공개), `dProp3` (공개) 속성을 가지며, `Init` (생성자), `dProp3_Access` (접근자), `dProp3_Assign` (설정자), `MyMethod1` (공개), `MyMethod2` (비공개) 메서드를 포함한다.

''Hello World'' 프로그램의 출력


비주얼 폭스프로는 IDE에서 속성 시트 (메서드 포함)를 통해 접근할 수 있는 광범위한 사전 정의된 클래스 및 시각적 객체 라이브러리를 가지고 있다.[17] 이러한 비주얼 개발 환경을 통해 GUI 기반 응용 프로그램 개발을 쉽게 할 수 있다.

4. 2. 관계형 데이터베이스 엔진

비주얼 폭스프로(VFP)는 관계형 데이터베이스 엔진과 밀접하게 결합되어 있다. 이 관계형 데이터베이스는 폭스프로의 xBase 기능을 확장하여 SQL 쿼리 및 데이터 조작을 추가로 지원한다. 다른 데이터베이스 관리 시스템과는 달리, 비주얼 폭스프로는 완전한 동적 프로그래밍 언어이므로 별도의 범용 프로그래밍 환경이 필요하지 않다. 팻 클라이언트 응용 프로그램 개발뿐만 아니라, 미들웨어나 웹 응용 프로그램 개발도 가능하다.[1]

4. 3. 데이터 처리

비주얼 폭스프로는 광범위한 데이터베이스 조작 및 인덱싱 명령어를 제공한다. 테이블 생성, 데이터 추가/수정/삭제, 인덱싱 등 다양한 기능을 지원하며, xBase 스타일 명령어와 SQL DML 명령어를 모두 사용할 수 있다.

다음은 테이블을 생성하고 데이터를 처리하는 코드 예시이다.


  • 테이블 생성

CREATE TABLE randData (iData I)

  • xBase 및 SQL DML 명령어를 사용하여 임의 데이터 채우기

FOR i = 1 TO 50

APPEND BLANK

REPLACE iData WITH (RAND() * 100)

INSERT INTO randData (iData) VALUES (RAND() * 100)

ENDFOR

  • 데이터에 구조적 인덱스 배치

INDEX ON iData TAG iData

CLOSE DATA && 열린 라이브러리 등을 닫지 마세요

  • xBase 스타일 명령어를 사용하여 정렬된 데이터 표시

USE randData

SET ORDER TO iData

LOCATE && GO TOP 대신. 인덱스를 사용하여 TOP 찾기 강제

LIST NEXT 10 && 처음 10개

GO BOTTOM

SKIP -10

LIST REST && 마지막 10개

CLOSE DATA

  • SQL DML 명령어를 사용하여 정렬된 데이터 탐색

SELECT * ;

FROM randData ;

ORDER BY iData DESCENDING



데이터 처리 프로그램의 출력


VFP 9의 "도움말" 명령 인덱스에는 수백 개의 명령어와 함수가 설명되어 있다.

또한, ODBC를 이용하여 외부 데이터베이스에 접근할 수 있다. 다음은 ODBC 데이터 소스에 접속하여 데이터를 처리하는 코드 예시이다.



&& ODBC데이터 소스에 접속

LOCAL nHnd

nHnd = SQLCONNECT ("ODBCDSN", "user", "pwd")

&& SQL 커맨드를 실행

LOCAL nResult

nResult = SQLEXEC (nHnd, "USE master")

IF nResult < 0

MESSAGEBOX ("MASTER database does not exist!")

RETURN

ENDIF

&& 원격 서버에서 데이터를 검색

&& 로컬 데이터 커서 그것을 저장

nResult = SQLEXEC (nHnd, "SELECT * FROM authors", "QAUTHORS")

&& 원격 테이블에 있는 레코드를 갱신

LOCAL cAuthorID, cAuthorName

cAuthorID = "1001"

cAuthorName = "New name"

nResult = SQLEXEC (nHnd, "UPDATE authors SET auth_name = ?cAuthorName WHERE auth_id = ?cAuthorID")

&& 끊기

SQLDISCONNECT(nHnd)


4. 4. 개발 편의성

비주얼 폭스프로(VFP로 약칭되는 경우가 많음)는 관계형 데이터베이스 엔진과 밀접하게 결합되어 있다. 이 관계형 데이터베이스는 폭스프로의 xBase 기능을 확장하여 SQL 쿼리 및 데이터 조작을 추가로 지원한다. 많은 데이터베이스 관리 시스템과 달리, 비주얼 폭스프로는 완전한 동적 프로그래밍 언어이며, 추가적인 범용 프로그래밍 환경을 필요로 하지 않는다. 팻 클라이언트 애플리케이션 개발뿐만 아니라, 미들웨어웹 애플리케이션도 개발 가능하다.

비주얼 폭스프로 코드 예제:

```visualfoxpro

&& ODBC 데이터 소스에 연결

LOCAL nHnd

nHnd = SQLCONNECT ("ODBCDSN", "user", "pwd")

&& SQL 명령 실행

LOCAL nResult

nResult = SQLEXEC (nHnd, "USE master")

IF nResult < 0

MESSAGEBOX ("MASTER 데이터베이스가 존재하지 않습니다!")

RETURN

ENDIF

&& 원격 서버에서 데이터를 검색하여

&& 로컬 데이터 커서에 저장

nResult = SQLEXEC (nHnd, "SELECT * FROM authors", "QAUTHORS")

&& 원격 테이블의 레코드 갱신

LOCAL cAuthorID, cAuthorName

cAuthorID = "1001"

cAuthorName = "새 이름"

nResult = SQLEXEC (nHnd, "UPDATE authors SET auth_name = ?cAuthorName WHERE auth_id = ?cAuthorID")

&& 연결 해제

SQLDISCONNECT(nHnd)

5. 코드 예제

foxpro


  • 현재 위치에 출력

? "Hello World"

  • 지정된 위치에 출력

@ 1,1 SAY "Hello World"

  • 입력 시 지워지는 별도의 창에 출력

WAIT WINDOW "Hello World"

```

다음은 몇 가지 기본 구문 예시이다:

```foxpro

FOR i = 1 TO 10

x = x + 6.5

NEXT && "NEXT" 대신 "ENDFOR"를 사용할 수도 있음.

IF i = 25

i = i + 1

ELSE

i = i + 3

ENDIF

x = 1

DO WHILE x < 50

x = x + 1

ENDDO

x = 1

DO WHILE .T.

x = x + 1

IF x < 50

LOOP

ELSE

EXIT

ENDIF

ENDDO

nMonth = MONTH(DATE())

DO CASE

CASE nMonth <= 3

MESSAGEBOX("Q1")

CASE nMonth <= 6

MESSAGEBOX("Q2")

CASE nMonth <= 9

MESSAGEBOX("Q3")

OTHERWISE

MESSAGEBOX("Q4")

ENDCASE

FOR EACH oControl IN THISFORM.Controls

MESSAGEBOX(oControl.Name)

ENDFOR

f = Factorial(10)

FUNCTION Factorial(n)

LOCAL i, r

r = 1

FOR i = n TO 1 STEP -1

r = r * i

NEXT && "NEXT" 대신 "ENDFOR"를 사용할 수도 있음.

RETURN r

ENDFUNC

5. 1. Hello World



MESSAGEBOX("Hello World")


5. 2. 객체

visualfoxpro

loForm = CREATEOBJECT("HiForm")

loForm.Show(1)

DEFINE CLASS HiForm AS Form

AutoCenter = .T.

Caption = "Hello, World"

ADD OBJECT lblHi as Label WITH ;

Caption = "Hello, World!"

ENDDEFINE

```

위 코드는 "HiForm"이라는 클래스를 정의하고, `loForm`이라는 객체를 생성한다. `loForm.Show(1)`를 통해 폼을 화면에 표시한다. `HiForm` 클래스는 폼(Form)을 상속받아 `AutoCenter` 속성을 `.T.` (True)로 설정하여 폼을 화면 중앙에 배치하고, `Caption` 속성을 "Hello, World"로 설정하여 폼 제목을 지정한다. 또한, `lblHi`라는 레이블(Label) 객체를 추가하고 `Caption` 속성을 "Hello, World!"로 설정한다.

```visualfoxpro

loMine = CREATEOBJECT("MyClass")

? loMine.cProp1 && 이것은 작동합니다. (Double-ampersand는 줄 끝 주석을 표시합니다)

? loMine.cProp2 && 프로그램 오류: CPROP2 속성은 외부에서 숨겨져 있기 때문에 찾을 수 없습니다.

? loMine.MyMethod1() && 이것은 작동합니다.

? loMine.MyMethod2() && 프로그램 오류: MYMETHOD2 속성은 외부에서 숨겨져 있기 때문에 찾을 수 없습니다.

DEFINE CLASS MyClass AS Custom

cProp1 = "My Property" && 이것은 공개 속성입니다

HIDDEN cProp2 && 이것은 비공개 (숨겨진) 속성입니다

dProp3 = {} && 또 다른 공개 속성

PROCEDURE Init() && 클래스 생성자

This.cProp2 = "This is a hidden property."

PROCEDURE dProp3_Access && 속성 접근자

RETURN DATE()

PROCEDURE dProp3_Assign(vNewVal) && 속성 설정자는 속성 이름에 "_assign" 태그를 사용합니다

IF VARTYPE(vNewVal) = "D"

THIS.dProp3 = vNewVal

ENDIF

PROCEDURE MyMethod1()

  • 이것은 공개 메서드이며, 숨겨진 속성의 값을 반환하는 숨겨진 메서드를 호출합니다.

RETURN This.MyMethod2()

HIDDEN PROCEDURE MyMethod2() && 이것은 비공개 (숨겨진) 메서드입니다

RETURN This.cProp2

ENDDEFINE

```

위 코드는 `MyClass`라는 클래스를 정의하고, `loMine`이라는 객체를 생성한다. `cProp1`은 공개 속성으로 `loMine.cProp1`과 같이 접근할 수 있다. `cProp2`는 `HIDDEN`으로 선언된 비공개 속성이므로 외부에서 직접 접근할 수 없다. `MyMethod1`은 공개 메서드이고, `MyMethod2`는 비공개 메서드이다. `MyMethod1`은 `MyMethod2`를 호출하여 숨겨진 속성 `cProp2`의 값을 반환한다. `dProp3`은 `dProp3_Access` 및 `dProp3_Assign` 메서드를 통해 접근 및 할당이 제어되는 공개 속성이다. `Init()` 메서드는 클래스 생성자 역할을 한다.[17]

5. 3. 데이터 처리

비주얼 폭스프로는 관계형 데이터베이스 엔진과 밀접하게 결합되어 있으며, xBase 기능을 확장하여 SQL 쿼리 및 데이터 작업을 지원한다. 비주얼 폭스프로는 완전한 동적 프로그래밍 언어이므로 별도의 프로그래밍 환경 없이도 팻 클라이언트, 미들웨어, 웹 응용 프로그램 개발이 가능하다.

다음은 테이블을 생성하고, 데이터를 추가하며, 인덱싱하고, 데이터를 조회하는 예제이다.



&& 테이블 생성

CREATE TABLE randData (iData I)

&& xBase 및 SQL DML 명령을 사용하여 임의의 데이터를 저장

FOR i = 1 TO 50

APPEND BLANK

REPLACE iData WITH (RAND() * 100)

INSERT INTO randData (iData) VALUES (RAND() * 100)

ENDFOR

&& 데이터에 구조 인덱스를 배치

INDEX ON iData TAG iData

CLOSE ALL

&& xBase풍 명령에서 정렬된 데이터를 표시

USE randData

SET ORDER TO iData

GO TOP

LIST NEXT 10 && First 10

SKIP 81

LIST NEXT 10 && Last 10

CLOSE ALL

&& SQL DML 명령에서 정렬된 데이터를 검색

SELECT * ;

FROM randData ;

ORDER BY iData DESCENDING



5. 4. ODBC 액세스

비주얼 폭스프로(VFP)는 SQL Pass Through(SPT) 기술을 사용하여 ODBC를 통해 데이터베이스에 접근하고 데이터를 처리할 수 있다. 다음은 SPT를 사용한 예시이다.




```visualfoxpro

&& ODBC 데이터 소스에 연결

LOCAL nHnd

nHnd = SQLCONNECT ("ODBCDSN", "user", "pwd")

&& SQL 명령 실행

LOCAL nResult

nResult = SQLEXEC (nHnd, "USE master")

IF nResult < 0

MESSAGEBOX ("MASTER 데이터베이스가 존재하지 않습니다!")

RETURN

ENDIF

&& 원격 서버에서 데이터를 검색하여

&& 로컬 데이터 커서에 저장

nResult = SQLEXEC (nHnd, "SELECT * FROM authors", "QAUTHORS")

&& 원격 테이블의 레코드 갱신

LOCAL cAuthorID, cAuthorName

cAuthorID = "1001"

cAuthorName = "새 이름"

nResult = SQLEXEC (nHnd, "UPDATE authors SET auth_name = ?cAuthorName WHERE auth_id = ?cAuthorID")

&& 연결 해제

SQLDISCONNECT(nHnd)

```

  • `SQLCONNECT()` 함수를 사용하여 ODBC 데이터 소스에 연결한다.
  • `SQLEXEC()` 함수를 사용하여 SQL 명령을 실행한다.
  • `"SELECT * FROM authors"` 쿼리를 실행하여 원격 서버에서 데이터를 검색하고, `"QAUTHORS"`라는 로컬 데이터 커서에 저장한다.
  • `"UPDATE authors SET auth_name = ?cAuthorName WHERE auth_id = ?cAuthorID"` 쿼리를 실행하여 원격 테이블의 레코드를 갱신한다.
  • `SQLDISCONNECT()` 함수를 사용하여 연결을 해제한다.

6. 관련 자료

참조

[1] 웹사이트 Visual FoxPro 9.0 Updates http://www.microsoft[...] Microsoft 2013-06-07
[2] 웹사이트 Download Microsoft Visual FoxPro 9.0 Service Pack 2.0 http://www.microsoft[...] Microsoft 2013-06-07
[3] 웹사이트 System Requirements http://msdn.microsof[...] Microsoft 2013-06-07
[4] 웹사이트 Frequently Asked Questions http://msdn.microsof[...] Microsoft 2013-06-07
[5] 뉴스 Microsoft to Try New Market By Acquiring Fox Software https://www.nytimes.[...] The New York Times 1992-03-25
[6] 뉴스 Microsoft Visual FoxPro 3.0 for Power Macintosh Now Available https://news.microso[...] 1996-07-25
[7] 웹사이트 Microsoft Visual FoxPro 9.0 https://learn.micros[...]
[8] 간행물 Visual FoxPro for Linux: A Violation of the EULA? http://www.linuxjour[...] Linux Journal 2003-05-13
[9] 웹사이트 Tiobe Index History for FoxPro http://www.tiobe.com[...]
[10] 웹사이트 Index | TIOBE - the Software Quality Company https://www.tiobe.co[...]
[11] 웹사이트 A Message to the Community http://msdn2.microso[...]
[12] 웹사이트 Microsoft Visual FoxPro 9.0 Service Pack 2.0 https://www.microsof[...]
[13] 웹사이트 Microsoft SEDNA download http://www.microsoft[...]
[14] Wiki Mas FoxPro http://fox.wikis.com[...]
[15] 뉴스 Developers petition Microsoft to reconsider FoxPro phase out https://www.zdnet.co[...] ZDNet.com 2007-04-03
[16] 웹사이트 The History of FoxPro http://www.foxprohis[...]
[17] 웹사이트 Visual FoxPro Development Productivity Tools http://msdn.microsof[...] Microsoft 2014-12-20
[18] Wiki VFP and Linux - Visual FoxPro Wiki http://fox.wikis.com[...]
[19] 웹사이트 A Message to the Community http://msdn2.microso[...]
[20] 웹사이트 Microsoft SEDNA download http://www.microsoft[...]
[21] 뉴스 Developers petition Microsoft to reconsider FoxPro phase out http://blogs.zdnet.c[...] ZDNet.com 2007-04-03
[22] 문서 SourceForge.net 上のLinux ABIプロジェクトからIBCSファイルを使う。
[23] 문서 - VFP8 アプリケーションはサポートされていないが、Windows NT 4.0で動作する。
[24] 문서 - German FoxPro User Group (dFPUG) が開発したパッチがある http://portal.dfpug.[...]
[25] 문서 - Windows 95ではセカンドレベルのメニューが機能しない。
[26] 웹인용 Visual FoxPro 9.0 Updates http://www.microsoft[...] Microsoft 2013-06-07
[27] 웹인용 Download Microsoft Visual FoxPro 9.0 Service Pack 2.0 http://www.microsoft[...] Microsoft 2013-06-07
[28] Wiki VFP and Linux - Visual FoxPro Wiki http://fox.wikis.com[...]
[29] 웹인용 A Message to the Community http://msdn2.microso[...] 2011-03-10
[30] 웹사이트 Microsoft SEDNA download http://www.microsoft[...]
[31] 뉴스 Developers petition Microsoft to reconsider FoxPro phase out http://blogs.zdnet.c[...] ZDNet.com 2007-04-03
[32] 문서 SourceForge.net에서 Linux ABI 프로젝트에서 IBCS 파일을 사용한다.
[33] 문서 -VFP8 응용 프로그램은 지원되지 않지만, Windows NT 4.0에서 작동한다.
[34] 문서 - German FoxPro User Group (dFPUG) 가 개발했던 패치가 있다. http://portal.dfpug.[...]
[35] 문서 - 윈도우 95 에서는 두 번째 수준의 메뉴가 작동하지 않는다.



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com