여러 테이블에서 데이터를 검색하고 크리스탈 보고서를 생성하려고합니다. 따라서 나는 새 테이블을 만들고 보고서를 생성해야 할 때마다 값을 삽입했습니다. 그래서 그 테이블에서 데이터를 검색하려면 다음 코드를 사용하고 있습니다.데이터 아더를 사용하여 다음 레코드를 읽을 수 없습니다.
코드 :
Private Sub gen_Report()
Dim dr, dr1, dr2 As OleDb.OleDbDataReader
Dim cmd, cmdDel, comm_inv1, comm_invuser As OleDb.OleDbCommand
If cnnOLEDB.State = ConnectionState.Closed Then
cnnOLEDB.Open()
End If
Dim strDelInsRp As String = ("DELETE FROM Inst_Report")
cmdDel = New OleDb.OleDbCommand(strDelInsRp, cnnOLEDB)
cmdDel.Parameters.AddWithValue("@chlno", cmbChal_no.Text)
cmdDel.ExecuteNonQuery()
Dim strSelIns As String = ("SELECT * FROM Installation_det where [email protected]")
cmd = New OleDb.OleDbCommand(strSelIns, cnnOLEDB)
cmd.Parameters.AddWithValue("@chlno", cmbChal_no.Text)
dr = cmd.ExecuteReader
Try
Do While dr.Read = True
mach_srno = dr("Machine_SrNo")
tft_srno = dr("TFT_SrNo")
chl_no = dr("Chalan_No")
usernm = dr("User_Name")
ins_dt = dr("Date_Of_Installation")
war_perd = dr("Warranty_Period")
war_till = dr("Warranty_Valid_Till")
Dim strSelInv1 As String = ("SELECT * FROM INVOICE_ONE where LAY_NO='VDC' AND [email protected]_no ")
comm_inv1 = New OleDb.OleDbCommand(strSelInv1, cnnOLEDB)
comm_inv1.Parameters.AddWithValue("@chn_no", chl_no)
dr1 = comm_inv1.ExecuteReader
If dr1.Read = True Then
doc_no = dr1("DOCU_NO")
code_no = dr1("CODE_NO")
memb_nm = dr1("MEMB_NM")
Dim strSelInvUser As String = ("SELECT * FROM INVOICE_USER where [email protected] AND LAY_NO='VDC' AND [email protected]")
comm_invuser = New OleDb.OleDbCommand(strSelInvUser, cnnOLEDB)
comm_invuser.Parameters.AddWithValue("@code", code_no)
comm_invuser.Parameters.AddWithValue("@docno", doc_no)
dr2 = comm_invuser.ExecuteReader
If dr2.Read = True Then
User_add = dr2("ILEN2") & dr2("ILEN3") & dr2("ILEN4") & dr2("ILEN5")
End If
dr2.Close()
End If
dr1.Close()
Dim strInsRep As String = "INSERT INTO Inst_Report(Mach_srNo,TFT_srNo,Mem_nm,UserNm,Dt_Inst,War_Per,war_till,User_Address) VALUES (@mach_srno,@tft_no,@mem_nm,@uname,@inst_dt,@war_per,@war_till,@address)"
Dim comm_InsRep As OleDb.OleDbCommand = New OleDb.OleDbCommand(strInsRep, cnnOLEDB)
comm_InsRep.Parameters.AddWithValue("@mach_srno", mach_srno)
comm_InsRep.Parameters.AddWithValue("@tft_no", tft_srno)
comm_InsRep.Parameters.AddWithValue("@mem_nm", memb_nm)
comm_InsRep.Parameters.AddWithValue("@uname", usernm)
comm_InsRep.Parameters.AddWithValue("@inst_dt", ins_dt)
comm_InsRep.Parameters.AddWithValue("@war_per", war_perd)
comm_InsRep.Parameters.AddWithValue("@war_till", war_till)
comm_InsRep.Parameters.AddWithValue("@address", User_add)
comm_InsRep.ExecuteNonQuery()
Loop
dr.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
그러나 문제는 DataReader를 만 내가 사용하는 '루프 동안 할'하고 경우에도 첫 번째 레코드에 대한 읽기 때문이다. 내가 가로 방향의 보고서를 생성 할 더 많은 필드의 수 있습니다으로
:
나는 또 다른 질문이 있습니다. 그래서 보고서의 방향을 변경하는 방법.
저는 Visual Studio 2005와 MS-Access 2007을 사용하고 있습니다. 프로그래밍 언어는 VB.NET입니다. 데이터에 관한
가
데이터 보관함의 결과에 두 개 이상의 레코드가 포함되어 있는지 확인 했습니까? –
예 ... 35 개의 레코드가 있습니다 – Harabati