2016-10-31 2 views
1

tbl1에서 *를 선택하여 tbl1_DEL에 삽입하려고합니다. 기본적으로 사용자가 레코드를 삭제하려면 오류가 발생한 경우 실제 레코드를 삭제하기 전에 먼저 _DEL 테이블에 레코드를 삽입합니다. 여기에 내가 궁금하고있어 지금까지 내 코드 ...VB.Net 한 테이블에서 다른 오류로 삽입/선택

queryD = "Insert Into tbl1_DEL " 
    queryD = queryD & " SELECT * from Tbl1 WHERE IdClient = @IdClient" 

    cmd.CommandText = queryD 
    cmd.Connection = Conn 
    Conn.Open() 

    cmd.Parameters.Add("@IDClient", SqlDbType.NChar).Value = 17 'Just testing here with hardcoded IDClient 

    rowAffected = cmd.ExecuteNonQuery() 

나는이와 계속 할 수있을 것 어떻게 생각해 기본적으로 그런 짓을 ....

if rowAffected <>0 then 
    Delete * from Tbl1 where IDClient = 17 'parametized as it is with the Insert/Select above 
    End if 

입니다 해당 필드에 대한 데이터 유형이 숫자 (18,0)이므로 매개 변수와 관련이있을 수 있습니다.

열 이름 제공된 값의 개수 나 테이블을 정의와 일치하지 않습니다 ... 나는 점점 계속 오류입니다.

+2

일반적으로 수행되는 방법은'Deleted' 또는'Active' 플래그 함께 어떤 종류의 데이터를 복제 할 필요가 없습니다. – Plutonix

+1

삭제를 보지 않고 말하기는 어렵지만 같은 cmd 인스턴스를 사용하는 경우 새 매개 변수를 추가하면 안됩니다. –

+0

기본적으로 삽입/선택 및 삭제 모두 cmd.ExecuteNonQuery를 수행합니까? – BobSki

답변

2

tbl1_DEL과 Tbl1의 구조가 다른 것으로 의심됩니다.

어느 쪽이 구조를 동기화하거나 필드의 목록을 지정

Insert into tbl1_DEL (Fld1,Fld2...) 
Select Fld1,Fld2... 
    From Tbl1 
    Where dClient = @IdClient 

귀하의 코멘트 당 (권장)

Insert into tbl1_DEL 
    Select *,TheOtherField = GetDate() -- Assuming the one extra field is the last 
     From Tbl1 
     Where dClient = @IdClient 
+0

그들은 현재 날짜를 입력하는 _Del 테이블의 필드 중 예외 하나와 동일합니다 - 필드 이름은 DeletedOn입니다. – BobSki

+1

@Bobski 하나의 필드가 오류를 생성합니다. 예를 들어 마지막 필드가 tbl1_DEL에 삽입되면 Tbl1에서 *, GetDate()를 선택하십시오. –

+0

레코드가 삽입 될 때 날짜가 필드에 자동으로 입력되면 어떻게됩니까? 나는 거기에 sqlserver 같은 옵션이 있다고 생각합니다 – BobSki

관련 문제