2012-07-10 2 views
0

master 데이터베이스에 두 개의 날짜와 ID 번호가 포함 된 작은 테이블이 있습니다. 나는이 테이블을 사용하여 쿼리를 업데이트하고 몇 가지 분석을 수행한다. 이 테이블은 다음과 같습니다 :엑셀 데이터와 아마 매크로가있는 Access 데이터베이스의 2 개 필드

Number | Date 
1  | 09.07.2012. 
2  | 10.07.2012. 

내가하고 싶은 것은 시작 후에 양식을 팝업하는 Excel 파일을 갖는 것입니다.

해당 양식에는 2 개의 필드와 2 개의 버튼이 있어야합니다. 그 필드에서 2 날짜를 입력하고 (날짜 선택기 또는 무엇이든) 첫 번째 버튼으로 새 데이터로 Access에서 언급 한 테이블을 업데이트하고 (오래된 날짜를 삭제하고 새 테이블로 업데이트) 다른 Access 데이터베이스에서 미리 정의 된 매크로를 시작합니다. .

얼마나 복잡한가? 당신은 저를 해결책에 안내 할 수 있습니까? 일부 샘플 코드는 우수 할 것입니다.

Command25_Click() 
CurrentDb.Execute "DELETE * FROM Datumi" 
Dim tbl As Recordset 

Set tbl = CurrentDb.OpenRecordset("Datumi") 
tbl.AddNew tbl!brojka = "1" 
tbl!datum = Text8.Value 
tbl.Update 
tbl.AddNew tbl!brojka = "2" 
tbl!datum = Text10.Value 
tbl.Update 
+0

업데이트하기가 쉽지만 매크로는 무엇을합니까? – Fionnuala

+0

매크로에서 매크로를 사용하는 경우 20 개 정도의 사전 정의 된 쿼리 만 실행합니다. 이러한 쿼리는 데이터를 필터링하기 위해 작은 테이블의 날짜를 사용합니다. – Peraklo

+0

그런 경우 매크로를 실행하기 위해 MS Access의 인스턴스를 시작하는 대신 Excel 끝에서 전체 작업을 수행하는 것이 좋습니다. 나는 Excel이 왜 그 안에 들어 왔는지를 제쳐두고 떠날 것입니다. 몇 가지 메모를 추가하겠습니다. – Fionnuala

답변

0

날짜의 업데이트를 사용하여 저장된 쿼리를 실행하는 방법을 보여주기 때문에 이것은 다소 연장 될 것입니다.

'SQL for stored query, this assumes you 
'will be updating based on some key 
UPDATE DatesTable t 
SET t.Date1 = [@Date1], t.Date2 = [@Date2] 
WHERE t.aAuto=[@Key] 

'Code for Excel 
'You could set a library reference to 
'Microsoft ActiveX Data Objects x.x Library 
Dim cmd As Object 
Dim cn As Object 

Set cmd = CreateObject("ADODB.Command") 
Set cn = CreateObject("ADODB.Connection") 

'Connection string, see also http://connectionstrings.com 
strCon = "Provider=Microsoft.ACE.OLEDB.12.0; " & _ 
"Data Source=z:\docs\test.accdb" 

cn.Open strCon 

'Name of the saved query 
cmd.CommandText = "UpdateDates" 
cmd.CommandType = adCmdStoredProc 
cmd.ActiveConnection = cn 

'Some parameters. 
'http://www.w3schools.com/ADO/met_comm_createparameter.asp 
'Make sure you get the type right, you will find details here: 
'http://www.w3schools.com/ADO/ado_datatypes.asp 
'You will find direction here: 
'http://www.w3schools.com/ado/prop_para_direction.asp 

'Make sure you get the order right 
'adDate = 7, adInteger = 3, adParamInput = 1 
cmd.Parameters.Append cmd.CreateParameter("@Date1", 7, 1, , txtDate1) 
cmd.Parameters.Append cmd.CreateParameter("@Date2", 7, 1, , txtDate2) 
cmd.Parameters.Append cmd.CreateParameter("@Date2", 3, 1, , MyUniqueKey) 

'recs : return for records affected 
'adExecuteNoRecords = 128 : no records are returned by this query, 
'so this increases efficiency 
'http://www.w3schools.com/ADO/ado_ref_command.asp 

cmd.Execute recs,,128 

'Did it work? 
MsgBox "Records updated: " & recs 
+0

코드를 보내 주셔서 감사합니다. 어떤 키를 기반으로 업데이트하는 것은 무엇을 의미합니까? 이것은 내게 꽤 새로운 그래서 내가 바보 같은 질문을 묻는 것 같아요 ... 또한, 만약 내가 undestand 맞아, 귀하의 SQL 쿼리는 테이블에 date1과 다른 날짜 2에 대한 1 열이 있다고 제안 ... 내 테이블은 첫 번째 열 ID입니다, 두 번째 열 날짜. – Peraklo

+0

위의 내용은 잘라 내기 및 붙여 넣기가 아니라 참고 자료입니다. dates 테이블을 갱신 할뿐만 아니라 다른 많은 조회를 실행하려고합니다. "일부 키"는 ID 또는 다른 키 필드를 의미합니다. 귀하의 설명은 상세하지 않으므로 단순히 테이블을 비우고 새 행을 추가하거나 ID (일부 키)를 기반으로 기존 행을 업데이트하는지 여부를 알기는 어렵습니다. 테이블에 날짜가있는 행이 2 개만있는 경우에는 관련없는 테이블처럼 보입니다. 따라서 실제 테이블이나 예제를 묻는 경우 말할 수 없습니다. – Fionnuala

+0

그래서 내 견본을 요구 사항에 어떻게 적용하고 있습니까? 또한 20 개의 다른 쿼리를 실행하는 방법을 물어 보았습니다. – Fionnuala

관련 문제