MSAccess 데이터베이스에 레코드를 복사하는 간단한 방법을 찾고 있습니다. 저는 ASP 고전/VBscript 페이지와 ADODB를 사용하여 SQL 쿼리를 실행하고 있습니다. 내가 복제 할 기록은 기본 키를 가지고, 그래서 만이 해결 방법 (임시 테이블)을 발견ASP/VB 스크립트 및 기본 키를 사용하여 MS ACCESS에서 레코드를 복제하는 방법은 무엇입니까?
INSERT INTO mytable SELECT * FROM mytable WHERE id=... ---> error
나는 표준 쿼리를 사용할 수는 없지만, 나는 그것이 최선의 선택이 아니다 생각 :
<%
set RS=Conn.Execute("SELECT * INTO temptable FROM mytable WHERE id="&id
set RS=Conn.Execute("ALTER TABLE temptable ALTER COLUMN id INTEGER")
set RS=Conn.Execute("SELECT MAX(id) AS maxid FROM mytable")
maxid=RS("maxid")+1
set RS=Conn.Execute("UPDATE temptable SET id="&maxid)
set RS=Conn.Execute("INSERT INTO mytable SELECT * FROM temptable")
set RS=Conn.Execute("DROP TABLE temptable")
%>
더 나은
(나는 모든 DB 구조 변경 내용을 추적하지 않으려는)
나는 또한 내 쿼리의 모든 열 이름을 지정할 수 있습니다,하지만 난 컬럼의 거대한 숫자를 가지고 있고, 그들은 종종 수정하고 해결책? 감사합니다
'SELECT *'를 누르지 마십시오. 모든 관련 필드를 이름별로 선택하십시오. 즉, Id를 제외한 모든 필드입니다. – Fionnuala
@Remou는 100 % 정확하며 그의 의견을 뒷받침합니다. 이것은 당신이 마주 치게되는 문제입니다. 'SELECT * FROM Table'에서 각 행을 유일하거나 다른 것으로 만드는'IDENTITY' 필드를 포함하여 모든 것을 선택합니다. 이것은 피해야합니다. 복제하려는 각 컬럼을 선택하고'ID' 컬럼을 피해야합니다. 예 :'SELECT FirstName, LastName, MiddleInitial, BirthDate FROM USERS' –
RecordSets에는 필드 컬렉션이 있습니다. 그래서 rs.Fields : col.name <> PrimID이면 StarString = StarString & col.name & "": next'의 각 열에 대해 lile'을 수행하십시오. SQL보다 레코드 세트에 더 많은 것이 있습니다. – Noodles