삽입 트리거가있는 FoxPro 테이블에 삽입하려고하면 '함수가 구현되지 않았습니다.'오류가 발생합니다. 테이블 설정 GUI. vs2012를 사용하여 데이터 세트 내에 테이블 어댑터를 만들었습니다. 아래에 표시된 업데이트 문을 추가했습니다. 삽입/업데이트를 수행하는 C# 프로젝트 내의 코드도 아래에 나열되어 있습니다. FoxPro 테이블에서 관련된 트리거를 제거하면 성공적인 삽입/업데이트를 얻을 수 있습니다. 트리거를 사용하면 삽입 및 업데이트에서 '함수가 구현되지 않음'오류가 발생합니다. 선택 작업은 문제가 없습니다. 테이블에 삽입, 업데이트 및 삭제 트리거가있는 경우 VFP OLEDB 9 함수가 구현되지 않았습니다.
는FoxPro 테이블이 가진 utacc 삽입, 갱신 및 관련 SQL Server 테이블을 삭제하는 설정을 트리거 도와주세요. 게시물 하단에 트리거를 삽입하십시오.
VS 2012 테이블 어댑터 삽입 명령
INSERT INTO utacc
(fcmodid, fcuname, fccompid, fcacclvl, fcscope)
VALUES (?, ?, ?, ?, ?)
C# 코드
이러한 트리거는 SQL 서버 테이블에 삽입 표 어댑터using (var ta = new DataSet1TableAdapters.utaccTableAdapter())
{
foreach (var u in lUsers.GetList().Where(x => x.selected))
{
foreach (var screen in lScreen.GetList().Where(x => x.selected))
{
if (ta.GetData()
.Any(x => x.fccompid == _fccompid
&& x.fcmodid.Trim() == screen.fcmodid.Trim()
&& x.fcuname.Trim() == u.fcuname.Trim()))
ta.Update(perm, screen.fcmodid, _fccompid, u.fcuname);
else
ta.Insert(screen.fcmodid, u.fcuname, _fccompid, perm, "P");
}
}
}
를 통해 삽입/업데이트를 수행 할 수 있습니다.
여기
PROCEDURE M2MTrig_UTACCInsert
LOCAL Cntr, ErrCode, ConStr, ConnName, ConnHandle, RV, ErrHndlr
SET DATA TO UTIL
ErrHndlr = ON("ERROR")
IF EMPTY(UTACC.FCUNAME)AND EMPTY(UTACC.FCMODID)AND EMPTY(UTACC.FCCOMPID) THEN
RETURN .T.
ENDIF
ErrCode = 0
ON ERROR ErrCode = M2MTrig_ERR(ERROR(),MESSAGE(),ErrHndlr)
FOR Cntr = 1 TO 99
ConnName = "SystemDBConn" + ALLTRIM(STR(Cntr))
TRY
ConStr = DBGETPROP(ConnName,"CONNECTION","ConnectString")
CATCH TO oEx
ErrCode = oEx.ErrorNo
ENDTRY
IF ErrCode = 1562 THEN
EXIT
ENDIF
IF ErrCode <> 0 THEN
ON ERROR &ErrHndlr.
RETURN .F.
ENDIF
ConnHandle = SQLCONNECT(ConnName)
IF ErrCode <> 0 THEN
RETURN .F.
ENDIF
IF ConnHandle < 1 THEN
M2MTrig_ERR(-1, "Unable to connect using " + ConnName, ErrHndlr)
RETURN .F.
ENDIF
IF ErrCode <> 0 THEN
SQLDISCONNECT(ConnHandle)
RETURN .F.
ENDIF
Select UTACC
RV = M2MTrig_ExecSQL("EXEC UpdUTACC " + XC(FCACCLVL)+ ", "+ XC(FCCOMPID)+ ", "+ XC(FCMODID)+ ", "+ XC(FCSCOPE)+ ", "+ XC(FCUNAME), .T., ConnHandle, ErrHndlr)
IF ErrCode <> 0 THEN
SQLDISCONNECT(ConnHandle)
RETURN .F.
ENDIF
SQLDISCONNECT(ConnHandle)
IF ErrCode <> 0 THEN
RETURN .F.
ENDIF
IF RV < 0 THEN
RETURN .F.
ENDIF
IF RV < 1 THEN
M2MTrig_ERR(-1, "Could not update System database", ErrHndlr)
RETURN .F.
ENDIF
NEXT Cntr
ON ERROR &ErrHndlr.
RETURN .T.
문제가있는 FoxPro에 대해 이야기하고 있습니다. 두 번째 옵션은 CRUD를 수행 할 FoxPro COM 개체를 만드는 것입니다. COM 개체에 동일한 문제가 있는지 알고 계십니까? – midohioboarder
그리고 도와 주셔서 감사합니다. 정말 감사합니다. – midohioboarder
이전 ERP 시스템은 FoxPro를 기반으로 구축되었습니다. 시스템이 SQL Server로 천천히 마이그레이션되고 있습니다. 나는 제 3 자로 볼트 온 앱을 만들고 있습니다. 그러면 COM 객체의 길로 내려갈 것입니다. 다시 한번 감사드립니다. – midohioboarder