2009-09-26 5 views
2

안녕 얘들 아, 누군가가 내게 간단한 업데이트 쿼리를 통해 VB를 보여줄 수 있을까? 테이블에 새 필드를 추가하고 양식에 몇 개의 텍스트 상자를 추가하여 사용자가 레코드와 관련된 추가 데이터를 추가 할 수 있도록해야합니다.이 데이터는 이미이 폼의 기반이됩니다.MS 엑세스 2003 - 업데이트 SQL 쿼리를위한 VBA?

그래서 내가 가진 첫 번째 양식은 목록에 채우는 양식입니다. 사용자가이 목록의 선택 항목을 두 번 클릭하면이 양식에 연결된 표의 ID가 새 양식으로 열립니다. 이 텍스트 상자를 추가해야합니다 (모든 콤보 상자와 텍스트 상자는 하나의 레코드와 관련되어 있지만이 시점에서는 활성 폼에 묶여 있지만 언 바운드가 모두 있습니다.) 단추를 클릭하면 이미 정보를 저장하는 VB가 나타납니다 테이블에). 나는 이것을 만들지 않았지만, 더 이상 존재하지 않는 사람에 의해 지어졌으며 분명히이 물건에서 나보다 낫다. 내 문제는 거기 soooo 많은 VB 레코드에 대한 검사 및 다양한 SQL 문을 기반으로, 그 간단한 형태로 해독 할 수 없다는 것입니다.

그래서 나는이 떨어져 휴식을 시도 할 수 VB에서 SQL 문을 업데이트 간단한 예제를 찾고있었습니다.

은 내가 ID를 기반으로 레코드를 업데이트 할 필요 : recordId를 = me.RecordID

내가 실제로 내가 그러나 나는 시도 할 때마다, 다음 실행하려고, 예에 따라이 작업을 수행하는 방법을 알고 있다고 생각 SQL 버튼을 클릭 할 때 SYNTAX 오류의 런타임 오류가 발생하고 디버그가 db.execute (sql) 부분을 강조 표시합니다. 그래서 SQL 문을의 결과 직접 실행 창을 얻기 위해 노력하고, 나에게 잘 보이는이 사람이 약 15 플러스을 가지고 있기 때문에

UPDATE tblMain 
    SET [Name] = "John Doe", 
     [DATE] = #9/30/2009#, 
     [TYPE] = "TypeA", 
WHERE RecordID = 958; 

나는 (테이블의 모든 필드를 차지하지 않고 테이블을 업데이트 할 수 3 새, 그래서 여기에 약 14 필드를 무시하고,하지만 난 그 어쨌든 ???

, 나는 도움을 주셔서 감사합니다 그래서 항상 yall를! 감사합니다

EDIT 변경하고 싶지 않아!

미안 나는 항상 이것을 잊는다. ... 나는 actaully DAO 그것을 시도하고 있었다. .. .

Dim db as DAO.Database 
    Dim sql as String 
    set db = CurrentDb 

+0

.NET Framework 및 해당 ActiveX Data Objects .NET (ADO.NET)을 사용하고 있습니까? –

+0

VBA와 VB.NET은 매우 다른 방식으로 작동하기 때문에, 정확하게 기억하고 있습니다. 심지어 VB6에는 ADO를 수행하는 자체 방식이 있습니다. –

+0

와우 그게 내가 알아야 할 것, 아아. 내가 MS XP OS라고 말하고, 00-02/03에 액세스 할 수 있다고 말할 수있는 최고의 것. 당신이 00에서 일하고 02/03으로 변환하는 곳이라고 생각하나요? 의미가 있습니까? 나는 간신히 초보자이다. – Justin

답변

4

닫으 thaaat했다! 마지막 열 뒤에 간단한 쉼표가 추가되었습니다. 그것을 제거하고 잘 작동합니다.

UPDATE tblMain SET 
[Name] = "John Doe", 
[DATE] = #9/30/2009#, 
[TYPE] = "TypeA" 
WHERE RecordID = 958; 

예, 일부 열만 절대적으로 업데이트 할 수 있습니다. 그것은 최선의 방법입니다, BTW.

마지막으로, "Name"과 "Date"와 같은 예약어 다음에 열 이름을 지정하는 것은 나쁜 습관으로 간주되지만,이 사실을 알고 계십니다.

+0

고마워! 감사합니다. 예, 그 필드 이름은 실제로 예입니다. 어렴풋한 필드 이름에 대해 DB에서 너무 많이! – Justin

2

코드에 Debug.Print sql을 포함하는 것이 현명했습니다. bpayne은 이미 SQL 문에서 여분의 쉼표를 지적했습니다.

SQL 문 문제를 디버깅하는 데 유용한 다른 문제 해결 기술을 지적하고 싶습니다.

직접 실행 창에서 문을 복사하여 새 쿼리의 SQL보기에 붙여 넣습니다. 쿼리 디자이너에서 쿼리가 작동 할 때까지 쿼리를 수정 한 다음 VBA 코드를 수정하여 일치하는 SQL 문을 생성합니다.

이 경우 여분의 쉼표를 발견하지 못했을 수 있습니다. 그러나 새 쿼리를 만들고 쿼리 디자이너에서 처음부터 UPDATE 문을 작성할 수 있습니다. 그 중 하나가 작동되면, 당신은 자사의 SQL보기를 실패한 쿼리와 비교할 수 있습니다.

+0

감사합니다! 저는 보통 msgbox 대신 직접 실행 창을 사용합니다. 왜냐하면 나에게 그것은 쉽지만 그게 바로 나이기 때문입니다. 그래, 내가 (SQL에서 결과 SQL 문을 복사하고 쿼리 개체의 SQL보기에 붙여 넣기) 그렇게 생각했지만 모든 대괄호와 괄호에 대해 어떻게해야합니까 ??? 나는 또한 (SQL보기에서 VBA 코드를 가져 가면서) 역순으로 SQL 문을 계산할 생각을했지만 SQL 문자열은 대괄호와 paren이 모두 VB에서 괜찮습니까? 감사합니다. – Justin

+0

죄송합니다. 대괄호와 괄호에 대한 우려는 이해가되지 않습니다. 다른 점은 일반적으로 쿼리 디자이너에서 쿼리를 초안하는 것입니다. 그런 다음 VBA를 사용하여 쿼리의 SQL보기와 일치하는 SQL 문을 만듭니다. – HansUp

+0

글쎄, 내가 (SQL과 VB에서 SQL과 VB에서) 그래서 때로는 여러 테이블 등 n.that 쿼리에 대한 SQL을 알아 내려고 노력하고 오전 둘 다 배우는 의미였다. 나는 쿼리를 사용해야합니다. 빌더, SQL을 배울 수 있습니다. 그래서이 정확한 SQL을 VBA 문자열로 사용할 수 있습니까 ?? 왜냐하면 작은 비트에서 vba의 SQL 문자열에 대해 알게 되었기 때문에 SQL 뷰에 존재하는 모든 괄호와 대괄호는 vba의 SQL 문자열에서 작동 할 수 있는지 확실하지 않습니다. ?? 죄송합니다 이것은 일반적인 질문이었고 위의 쿼리와 관련이 없습니다 ....이 방법으로 쿼리를 확인하는 것이 일반적입니다 .. thanks – Justin

관련 문제