복붙노트

[SQL] 어떻게 테이블 변경하여 액세스의 진수 필드를 만들려면 어떻게해야합니까?

SQL

어떻게 테이블 변경하여 액세스의 진수 필드를 만들려면 어떻게해야합니까?

나는 프로그래밍 MS Access 테이블에 새 열을 만들려고합니다. 나는 MyField DECIMAL (9,4) NULL을 추가 ALTER MyTable 테이블의 많은 순열을 시도했다; 얻은 :

나는 쉽게 두 종류로 이동 숫자 필드를 만들 수 있습니다,하지만 난 소수를 원한다. 나는 매우 강력 하나의 ALTER TABLE 문에서이 작업을 수행하는 것을 선호하지 필드를 만든 다음이를 변경해야합니다.

나는 액세스 2003을 사용하고 있습니다.

해결법

  1. ==============================

    1.당신이 액세스 테이블에 새 열을 만들려면, DAO.tableDef 객체를 사용하기 쉬운 :

    당신이 액세스 테이블에 새 열을 만들려면, DAO.tableDef 객체를 사용하기 쉬운 :

    Dim my_tableDef As DAO.TableDef
    Dim my_field As DAO.Field
    
    Set my_tableDef = currentDb.TableDefs(my_table)
    Set my_Field = my_tableDef.CreateField(my_fieldName, dbDecimal, myFieldSize)
    my_Field.decimalPlaces = myDecimalPlaces
    my_Field.defaultValue = myDefaultValue
    
    my_tableDef.Fields.Append my_Field
    
    set my_Field = nothing
    set my_tableDef = nothing
    

    물론 당신은 더 삭제할 수 있습니다.

    당신은 ADODB (또는 ADOX?) 객체와 그렇게 할 수있을 수도 있지만, 당신은 MDB 파일을 작업하는만큼, DAO는 직선과 효율적입니다.

    PS : 일부 포럼에 확인해 본 결과, 소수점 필드와 DAO 버그가있는 것 같습니다. http://allenbrowne.com/bug-08.html. 조언이 또는 사용 (내가 어떤 loosy 소수는 반올림과 관련된 문제를 방지하는 것이 무엇 인) "를 두 번 가서"있다 "implicite"ADO는 데이터베이스를 수정하는 방법

    strSql = "ALTER TABLE MyTable ADD COLUMN MyField DECIMAL (28,3);"
    CurrentProject.Connection.Execute strSql
    
  2. ==============================

    2.소수의 데이터 유형은 기본 제트 4.0 MDB 파일에서 지원되지 않습니다. 당신은 SQL 창에서 소수점 데이터 유형을 사용하도록 설정 (ANSI 92)는 SQL Server 호환성 구문을 사용합니다.

    소수의 데이터 유형은 기본 제트 4.0 MDB 파일에서 지원되지 않습니다. 당신은 SQL 창에서 소수점 데이터 유형을 사용하도록 설정 (ANSI 92)는 SQL Server 호환성 구문을 사용합니다.

    메뉴, 도구> 옵션을 클릭합니다. 테이블 / 쿼리 탭을 클릭합니다. SQL 서버 호환 구문에서 "이 데이터베이스"에 대한 (ANSI 92) 섹션을 체크 박스를 표시합니다. 당신이 당신의 DB의 복사본이 시도 할 수 있도록이 모드는, 와일드 카드 쿼리를 포함한 전체 DB에 영향을 미칠 것입니다.

    는 SQL 창에이 붙여 넣기 :

    ALTER TABLE MyTable
      Add COLUMN MyField DECIMAL (9,4) NULL;
    

    당신이 당신의 데이터베이스의 모드를 변경하지 않으려면, 당신은 ADODB 라이브러리 VBA 코드를 사용해야합니다 :

    Dim conn As ADODB.Connection
    
    Set conn = CurrentProject.Connection
    conn.Execute "ALTER TABLE MyTable " _
        & "ADD COLUMN MyField DECIMAL (9,4) NULL;"
    conn.Close
    
  3. ==============================

    3.은 ALTER TABLE 구문은 단지에있는 동안 4.0 / ACE 제트에서 지원됩니다 ANSI-92 쿼리 모드. 예를 들어, ADO 연결을 시도

    은 ALTER TABLE 구문은 단지에있는 동안 4.0 / ACE 제트에서 지원됩니다 ANSI-92 쿼리 모드. 예를 들어, ADO 연결을 시도

    CurrentProject.Connection.Execute "ALTER TABLE myTbl 열 추가 myColumn의 DECIMAL (9,4)"

  4. from https://stackoverflow.com/questions/180929/how-do-i-create-a-decimal-field-in-access-with-alter-table by cc-by-sa and MIT license