2011-11-15 3 views
0
Dim cmd As New OleDbCommand("Insert into DDTable" _ 
& "Values NewMember.ApplicantName, NewMember.ApplicationNo, NewCustomer.ApplicationNo, NewCustomer.PlanName, NewCustomer.AccountNo, NewCustomer.InvestmentAmount, Deposit.InvestmentAmount, NewMember.ProcessingFee, NewCustomer.ProcessingFee, NewMember.IntroducerName, NewMember.IntroducerCode" _ 
& "SELECT NewMember.ApplicantName, NewMember.ApplicationNo, NewMember.ProcessingFee, NewMember.IntroducerName, NewMember.IntroducerCode From NewMember" _ 
& "Union All Select NewCustomer.ApplicationNo, NewCustomer.PlanName, NewCustomer.AccountNo, NewCustomer.InvestmentAmount, NewCustomer.ProcessingFee From NewCustomer" _ 
& "Union All Select Deposit.InvestmentAmount From Deposit" _ 
& "WHERE NewCustomer.OpeningDate =#" & dtpDates.Text & "# AND Deposit.Date =#" & dtpDates.Text & "# AND NewMember.JoiningDate =#" & dtpDates.Text & "#", con) 
cmd.ExecuteNonQuery() 
con.Close() 

위의 코드는 "오류로 삽입하는 중 오류가 발생했습니다."라는 이유만으로 이유를 찾을 수 없습니다! 도와주세요. 감사합니다SQL에서 오류가 문에 삽입 됨

에서 계속 : 지금은 작업 SQL의 내 데이터베이스 테이블에 레코드를 삽입하고 코드는 다음과 같습니다 코드 ...

Dim cmd As New OleDbCommand("SELECT NewMember.ApplicantName, NewMember.ApplicationNo, NewMember.ProcessingFee, NewMember.IntroducerName, NewMember.IntroducerCode, NewMember.JoiningDate, NewCustomer.ApplicationNo, NewCustomer.PlanName, NewCustomer.AccountNo, NewCustomer.InvestmentAmount, NewCustomer.ProcessingFees, NewCustomer.OpeningDate, Deposit.Date, Deposit.InvestmentAmount Into DDTable FROM NewMember, NewCustomer, Deposit WHERE NewMember.JoiningDate = NewCustomer.OpeningDate AND NewCustomer.OpeningDate = Deposit.Date;", con) 

그러나이 최근의 문제는, 그 난에있는 DateTimePicker를 사용하고 때 날짜를 선택하면 레코드가 저장되지 않습니다. 어떤 아이디어, 어떤 도움?

+0

당신은 그 코드를 SQL 테스트 장치에 넣으려고 했습니까? 그게 전혀 이해가 안되면 아주 가난한 SQL입니다. –

+0

줄 계속은 공백을 추가하지 않습니다. 따라서 쿼리가 "Insert into DDTableValues"로 확장됩니다 ... – chip

+0

아마도 새 질문을 별도의 질문으로 게시해야합니다. –

답변

3

몇 가지 문제는 :

  1. 당신은 VALUES 절과 INSERT에서 SELECT 절을 모두 가지고있다. 둘 중 하나만 가질 수 있습니다.

  2. VALUES 절에는 필수 값 목록 주위에 괄호가 없습니다.

  3. 데이터를 삽입 할 열의 목록을 지정하지 않으므로 표의 열 번호와 순서가 VALUES 또는 SELECT (사용자가 결정한 항목)에 지정한 것과 일치하도록하십시오. 그건 그렇고, VALUES 절을 컬럼 목록과 혼동 한 것 같습니다. 열 목록에는 앞에 오는 키워드가 없지만 열 목록 주위에 괄호가 필요합니다.

  4. UNION을 JOIN 인 것처럼 사용하고 있습니다. JOIN을 의미하는 경우 SELECT 문을 다시 작성해야합니다. UNION을 의미하는 경우 UNIONED SELECT에 같은 수의 열을 생성해야합니다. (힌트 : 실제로 JOIN을 의미합니다).

  5. 각 줄 끝에는 공백이 포함되지 않으므로 통역사가 이해할 수없는 방식으로 함께 텍스트가 실행됩니다. 노동 조합에 대한 이해는 하나의 레코드에 두 개의 쿼리에 가입되어 있지만

1

나는 당신이 단일 쿼리로 레코드를 함께 여러 테이블을 조인하려고 쿼리의 외모, 어떤 SQL 전문가 또는 아무것도 해요 테이블에 삽입하십시오. 다른 테이블에 레코드 용 데이터가 없을 수 있고 비어있을 수있는 경우에 따라 INNER JOIN 또는 LEFT JOIN 또는 RIGHT JOIN을 사용해야합니다.

또 다른 문제는 문자열 연결입니다. 당신은 그들이 더 쿼리처럼 보이는 어떤 경우 DDTableValues 대신 DDTable Values

로 원인이 당신의 문자열의 끝에 공백을 해달라고 당신을 찾고 :

INSERT INTO DDTable ([NewMember.ApplicantName], [NewMember.ApplicationNo], [NewCustomer.ApplicationNo], [NewCustomer.PlanName], [NewCustomer.AccountNo], [NewCustomer.InvestmentAmount], [Deposit.InvestmentAmount], [NewMember.ProcessingFee], [NewCustomer.ProcessingFee], [NewMember.IntroducerName], [NewMember.IntroducerCode]) 
SELECT NewMember.ApplicantName, NewMember.ApplicationNo, NewCustomer.ApplicationNo, NewCustomer.PlanName, NewCustomer.AccountNo, NewCustomer.InvestmentAmount, Deposit.InvestmentAmount, NewMember.ProcessingFee, NewCustomer.ProcessingFee, NewMember.IntroducerName, NewMember.IntroducerCode 
FROM NewMember 
INNER JOIN NewCustomer ON NewMember.<identifier> = NewCustomer.<identifier> 
INNER JOIN Deposit ON NewMember.<identifier> = Deposit.<identifier> 
WHERE NewCustomer.OpeningDate = <date> AND Deposit.Date = <date> AND NewMember.JoiningDate = <date> 

<identifier>은의 필드를 참조 CustomerID 또는 MemberID이든 다른 것이 든 모든 레코드를 함께 연결하는 테이블.

참고 : 방금 주목 한 또 다른 것은 테이블 이름, 마침표 및 필드 이름을 사용하는 VALUES 목록입니다. 테이블 필드 이름이 실제로 'NewMember'인지 여부는 알 수 없습니다.ApplicantName '또는 당신은 당신의 예제에서 넣어 경우, 나는이 경우에 값 목록은 귀하의 값 목록도 많이 포함하고 더 같은

INSERT INTO DDTable ([ApplicantName], [ApplicationNo], [PlanName], [AccountNo], [InvestmentAmount], [ProcessingFee], [IntroducerName]) 

보일 것입니다, MSACCESS 필드 이름에서 기간을 허용 완전히 확실하지 않다 같은

NewMember.ApplicationNo AND NewCustomer.ApplicationNo 
NewMember.ProcessingFee AND NewCustomer.ProcessingFee 
NewCustomer.InvestmentAmount AND Deposit.InvestmentAmount 

로 그것의 모양에 의해 중복 필드 그렇다면, 당신의 필드가 해결해야 할 문제가 될 수있는 이름을 지정하는 방법에 따라 달라집니다.

+0

방언이 다르기 때문에 MySQL 전문가는 MS Access를 사용하는 사람에게 도움이되지 않을 것입니다. –

+0

요점은, 나는 SQL 전문가를 일반적으로 의미했다. 나는이 두 가지를 다뤄 봤기 때문에 두 가지의 작은 차이점과 기능을 알고 있습니다. 등록 된 회원으로 만 이틀 만에 나는 질문에서 태그를보고 그들이 말하는 언어/프로그램을보아야한다는 것을 기억해야합니다. –

관련 문제