2008-10-08 5 views
4

저는 이전 Access 데이터베이스를 사용하고 있습니다 (예, 매우 못 생겼고 싫었습니다). 내가 만들고있는 VB 응용 프로그램에서 일부 열을 수정해야합니다. 대부분의 수정 설정을 올바르게했지만 텍스트 열을 수정하면 "Zero Length 허용"이 false로 설정되어 있다는 사실에 맞서 싸우고 있습니다. 액세스 테이블 변경 "Zero Length 허용"

는 SO ALTER TABLE [출원인 표] I는 그 갖도록 변경할 필요가 true로 설정 "제로 길이 허용"COLUMN [출원인 ID] 텍스트 (255)

을 변경합니다.

내가 시도 ALTER TABLE [신청자 표] COLUMN [신청자 ID] 텍스트 (255) NULL을

하지만 그 중 하나가 작동하지 않는 것을 변경합니다. 나는 그 해결책을 다 찾아 보았지만 똑바로 대답 할 수없는 것처럼 보입니다.

아이디어가 있으십니까?

감사합니다. Ryan.


감사합니다. 나는 그것이 접근이 아니라 내가 기쁘다.

어쨌든 전체 데이터 모델은 휴지통이므로이 애플리케이션을 통해 해킹하려고합니다.

+0

당신이 GUI (표 디자인)에 무엇을하려고 발생하면? – BIBD

+0

Allen Browne, MVP : "왜이 속성을 Yes로 설정해야할까요? 다른 소프트웨어와의 호환성은 아마도 일 것입니다. 정말 이상한 분야입니까? 일반적으로 나는 이것이 잘못된 생각이라고 생각합니다. 1) 사용자가 차이점을 알 수 없으며 2) 액세스가 차이를 알 수 없습니다 (DLookup()을 사용해보십시오). " - http://www.pcreview.co.uk/forums/allow-zero-length-using-sql-t1636536.html – Fionnuala

답변

4

이 옵션은 Jet SQL과 함께 사용할 수 없습니다. Access gui 또는 vba 코드로이 작업을 수행 할 수 있습니다. 예 :

Public Function setAllowZeroLenStr()  
    On Error GoTo Proc_Err 

    Dim db As Database 
    Dim tbl As TableDef 
    Dim fld As DAO.Field 

    Set db = CurrentDb 
    Set tbl = db.TableDefs![Applicant Table] 
    Set fld = tbl.Fields![Applicant ID] 
    fld.AllowZeroLength = True 

Proc_Exit:  
    Set fld = Nothing 
    Set tbl = Nothing 
    Set db = Nothing 

    Exit Function 

Proc_Err:  
    MsgBox Err.Number & vbCrLf & Err.Description 
    Err.Clear 
    Resume Proc_Exit  
End Function 
0

이전 몇 달 전 DDL/SQL에서 불가능했던 ISTR과 동일한 작업을하고 싶었지만 필드 (table.fields)를 찾고 AllowZeroLength를 필요한 값인

으로 설정하여 VBA에서 수행 할 수있었습니다.
3

동의 :이 설정에는 ACE/Jet 구문이 없습니다. 당신이 그것에 대해 생각한다면, SQL DLL은 표준 '휴대용'물건, 대부분의 SQL 제품에서 얻을 수있는 것들이 될 경향이 있습니다. 대부분의 SQL에는 명시 적 (Dis) AllowZeroLength 기능이 없으므로 ACE/Jet 구문이 아닌 Standard에 포함되지 않았습니다.

FWIW ACE/Jet에서도 작동하는 '휴대용'솔루션은 CHECK 제약 조건을 사용하는 것입니다. 뭔가 같은 :

ALTER TABLE [Applicant Table] ADD 
    CONSTRAINT Applicant_ID__not_zero_length 
     CHECK (LEN([Applicant ID]) > 0); 

이 이미 존재하는 경우를 보내고 처음 (!) 또는 DROP에서 CHECK 제약 조건을 생성하지 필요 제로 길이 값을 허용 ...하지만 왜 식별자를 허용 할 것 ("신청자 ID")는 여하튼 길이가 0이 될 수 있습니까?

0

사용 Interop.ACCDBLIB

이 시도 :

DBLib dbLib = new DBLib(); 
    dbLib.ConnectionString = ConnectionString; 
    dbLib.Initialize(); 
    dbLib.ModifyTextFieledSetAllowZeroLength(ref TableName, ref FiledName);