2016-07-29 2 views
0

텍스트 상자가있는 양식이 있습니다. 사용자가 텍스트 상자에 입력 한 내용을 표에 삽입합니다. 사용자가 "Me.ProjectName"이라는 텍스트 상자에 아포스트로피를 입력하면 오류가 발생합니다. 내 코드는 다음과 같습니다VBA를 사용하여 어포 스트로피에 문을 삽입 하시겠습니까?

CurrentDb.Execute "INSERT INTO Table1(ProjectNumber, Title) " & _ 
     " VALUES('" & ProjectNumber & "','" & Me.ProjectName & "')" 
+1

가능한 복제 [워드 VBA SQL 쿼리에 따옴표 처리하는 방법?] (http://stackoverflow.com/questions/3975042/how- to-deal-with-single-quote-in-word-vba-sql-query) –

+0

일반적으로 SQL에서 연결할 때 많은 오류가 발생하지 않도록 다음 함수를 사용할 수 있습니다. [CSql] (http : // stackoverflow. com/a/37164607/3527297). – Gustav

답변

1

당신은 당신의 문자열이 가능한 2 따옴표와 함께 견적을 대체하여 따옴표를 포함 탈출해야합니다

Dim SQL As String 

    SQL = "INSERT INTO Table1(ProjectNumber, Title) " & _ 
    " VALUES('" & ProjectNumber & "','" & Replace(Me.ProjectName, "'", "''") & "')" 

    CurrentDb.Execute SQL 
+0

Perfect. 고맙습니다! –

+0

@MekenzieBuhr -이 방법을 사용하기로 결정했다면 Google의 "동적 SQL"및 "매개 변수가있는 쿼리"로 잠시 시간을내어 왜 여전히 잘못하고 있는지 알아보십시오. –

4

당신은 구조 및 동적 SQL을 실행하지 않아야 사용자 입력을 기반으로합니다. 당신은 같은 매개 변수화 된 쿼리, 뭔가를 사용해야합니다

Dim cdb As DAO.Database 
Set cdb = CurrentDb 
Dim qdf As DAO.QueryDef 
Set qdf = cdb.CreateQueryDef("", _ 
     "INSERT INTO Table1 (ProjectNumber, Title) VALUES (@prjnum, @title)") 
qdf.Parameters("@prjnum").Value = ProjectNumber 
qdf.Parameters("@title").Value = me.ProjectName 
qdf.Execute 
+0

@ gord-thompson에 감사드립니다. 긴 텍스트 (255 자 이상)가있을 때 실행하는 데 문제가 있습니다. 이 문제를 어떻게 해결할 수 있습니까? –

+0

디자인보기에서 테이블을 열어 열 정의를 확인하십시오. 'Short Text' (때로는'Text'라고도 함) 열에 최대 길이가 정의되어 있습니다. 최대 길이는 255자를 초과 할 수 없습니다. 'Long Text' (때로는'Memo'라고도 함) 열은 실제적으로 무제한입니다. –

+0

해당 필드에서 테이블이 이미 긴 텍스트로 설정되어 있습니다. 나는 전에 이런 일이 있었고 나는 그것을 고칠 줄 몰랐다. 네가 전에 이것에 빠진 적이 있는지 몰랐어. –

관련 문제