2010-03-10 2 views

답변

9

예 ... 프로젝트의 다양한 요소에 따라 다릅니다. 나는 현재 이전 형식의 SQL로 VFP9에서 실행할 수 있도록

일부 문제를 쿼리 모두 VFP9 SP1에서 애플 리케이션을 가지고 있고, (보고 HotFix3 포함) VFP9 SP2

당신은 아마와 함께 있고 싶어 70 SET 엔진 행동 70. 8과 9의 향상된 기능 중 일부는 초기에 게으른 그룹 별 절에서 쿼리하는 데 사용 된 멋진 트릭을 강제합니다. 특히 몇 가지 항목 만 고려해보십시오. 특히 당신이 알고있는 조회 테이블에 참여할 때 특히 그렇습니다 어쨌든 같은 가치를 지닌다. 8과 9에서는 모든 비 집계 함수에 의해 그룹을 한정해야합니다 ... 그런 경우에는 "상수"열을 SomeField로 MAX (SomeField)로 변경해야 할 수 있습니다. 그룹이 ID 키를 기반으로하는 경우 최대 값은 절대로 바뀌지 않습니다.

쿼리에서 알려진 다른 문제는 SELECT SUM()에서 발생했습니다. 쿼리를 수행하고 쿼리와 일치하는 레코드가 없으면 SUM() 열이 NULL로 되돌아오고 숫자를 원할 때 예기치 않은 데이터 형식이 나타납니다. 하나의 빠른 캐치는 언제나 숫자를 반환하는 ActualRecords로서 항상 COUNT (*)를 추가하는 것이 었습니다. 그런 다음 "Result.ActualRecords = 0"이 사용자에게 알리거나, 보고서를 중단하거나, 다른 방법으로 계속 진행할 것인지 확인할 수 있습니다.

보고 기능은 분명히 6에서 향상되었으며 특정 조건에서 "인쇄 시점"및 중첩 제어를 수행하지 않고도 특히 유용한 다중 링크 테이블보고 영역을 갖추고 있습니다. 이것은 최종 보고서에서 원하는 다중 관련 테이블에 유용합니다.

SQL SUM() 그룹에서 한 번만 업데이트하십시오. 난 당신이 할 경우 찾았 어

최종 레코드로 합계를 실행하면 최종 NVL (SUM (뭐), 0)로 합계가 실행되는 경우, NVL() 그 null 값을 가지고 강제로 0으로 설정하여 이후의 NULL 문제를 방지 ... 마찬가지로 MIN(), MAX(), AVG() 등의 항목에도 적용하십시오.

이들은 나에게 반짝이는 큰 것들 중 일부입니다.

+0

+1 SQL GROUP BY 변경 사항을 언급 한 경우. – DaveB

5

나는 그것이 일반적으로 상당히 고통 스럽다고 말할 것이다. DRapp에서 언급했듯이 모든 SQL-SELECT 문을 검토하여 GROUP BY 절을 개정 할 때 장단점을 찾아 보거나 SET ENGINEBEHAVIOUR을 사용하는 것이 더 쉬울 수도 있습니다. SET REPORTBEHAVIOUR을 사용하여 VFP6과 같은 작업을 수행 할 수 있습니다.

또한 VFP6에서는 VFP6이 아닌 DBF를 열 때 테이블 구조 검사를 수행합니다. 결과적으로 VFP9에서 DBF 파일을 열면 헤더 레코드 수가 실제 레코드 수와 같지 않기 때문에 2065 오류가 발생하지만 이전 버전에서는 정상적으로 작동합니다. 이 동작은 SET TABLEVALIDATE 명령으로 제어 할 수 있습니다.

5

저는 이번 주에 VFP 6 응용 프로그램 몇 가지 문제를 다루었으며 VFP 9 SP2로 문제가 쉽게 해결 될 수 있기 때문에 실망했습니다.

다른주의 사항은 VFP 6 ODBC 드라이버에서 데이터에 액세스하는 경우입니다.VFP 7에서 구현 된 새로운 데이터베이스 기능 중 하나를 데이터베이스 이벤트와 같은 VFP 9 또는 varchar와 같은 새 데이터 형식을 사용하면 데이터가 ODBC 드라이버가 처리 할 수없는 형식으로 변환됩니다. 대신 새 VFP OLE DB 드라이버가 사용되며 일부 도구는 OLE DB 기능을 처리 할 수 ​​없습니다.

새 보고서 디자이너는 더욱 강력하지만 렌더링에 사용되는 GDI +에는 오버플로 별을 없애기 위해 보고서의 일부 필드 크기 조정이 필요합니다. Alan 메모로 SET REPORTBEHAVIOR를 사용하여이 문제를 피할 수 있지만 실제로 보고서 미리보기 기능을 활용하려고합니다.

AFIELDS() 명령을 사용하면 배열에 더 많은 요소가 만들어집니다. 따라서 생성 된 배열에서 추가 행을 처리하기 위해 일부 코드를 조정해야 할 수도 있습니다.

문제가 생기면 여기에 게시하십시오. 우리가 도와 드리겠습니다.

릭 슈머

4

이미 많은 좋은 답변이 여기에 있습니다. 최근에 vfp6 응용 프로그램을 변환하면 프로세스가 상대적으로 어려워졌으며 특히 vfp9의 편집기 등을 사용하면 얻을 수있는 이점이 있습니다.

하나의 항목이 지적되지 않았습니다 ... 모든 보고서를 확인하고 "프린터 환경 저장"보고서 옵션은 실제로 프린터 파일에 하드 코딩 된 것이 아니라면 꺼집니다.

2

소스를 VFP9로 업그레이드 할 때 몇 가지 문제가 있습니다. 그들 중 대부분은 사소한 것입니다.

먼저해야 할 일은 VFP7, VFP8 및 VFP9의 새로운 기능 설명서를 검토하는 것입니다. 나는 이것이 고통처럼 느껴지는 것을 알고 있지만, 프로젝트를 업그레이드 할 때 가장 먼저해야 할 일입니다. VFP6 이상의 문서는 MSDN에서 찾을 수 있습니다.

많은 새로운 속성과 메서드가 클래스에 추가되었습니다. 이 중 하나가 사용자 정의 속성/메소드와 충돌하면 오류가 발생합니다.

또한 Vista UAC requirementshow to deal with them에 대해 알고 있어야합니다. VFP8 이하로 컴파일 된 프로그램은 "호환성"모드에서 실행됩니다. VFP9 프로그램은 Vista 응용 프로그램 매니페스트로 컴파일됩니다. 즉, 응용 프로그램 매니페스트의 requestedExecutionLevel이 asInvoker로 설정됩니다. VFP8 이하에서는 매니페스트에이 내용을 포함하지 않으므로 (또는 매니페스트를 전혀 포함하지 않음) 호환성 모드가됩니다.

즉, Vista에서 프로그램을 실행할 때 여러 가지 작업이 실패하거나 오류가 발생할 수 있습니다.

  1. 레지스트리에서 HKEY_LOCAL_MACHINE에 쓰려고하면 실패합니다.
  2. % programfiles % 또는 보호 된 폴더에 파일을 쓰려고하면 오류가 발생합니다. 프로그램은 common folders에만 작성해야합니다.

귀하는 옵션이 updating the Application Manifest이지만 프로그램에 절대적으로 관리 권한이 필요한 경우가 아니면 반드시 권장하지는 않습니다.

마지막으로 VFP9 SP2로 수정 된 여러 Vista 비 호환성 - some dealing specifically with Aero이 있습니다. 따라서 VFP9를 사용하려면 서비스 팩 2를 사용해야합니다.

관련 문제