Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > .NET Framework > Forum > ถามเรื่อง VB.net + Crystal Report + Access Database ผ่านทาง Connection String



 

ถามเรื่อง VB.net + Crystal Report + Access Database ผ่านทาง Connection String

 



Topic : 129471



โพสกระทู้ ( 17 )
บทความ ( 0 )



สถานะออฟไลน์




VB.NET + Access 2010 + Crystal Report

1.มีฐานข้อมูล 2 ไฟล์ โดยมีโครงสร้างเหมือนกันเป๊ะๆ สมุติว่าชื่อไฟล์ AAA.mdb และ BBB.mdb
2.ตอนเข้าใช้โปรแกรม(หน้า Login มีให้เลือก Path ของไฟล์ฐานข้อมูลที่ต้องทำงาน)
3.ตอนใช้งานโปรแกรม เก็บค่า Path ที่ได้ในข้อ 2. ไว้ในตัวแปรชื่อ "DataPath"
4.ตอนสร้างรายงานด้วย Crystal Report ออกแบบจาการดึงข้อมูลจากไฟล์ AAA.mdb
5.ตอนจะเรียกรายงานขึ้นมา อยากให้ดึงข้อมูลในไฟล์ที่ เก็บไว้ในตัวแปร Datapath (อาจจะเป็น AAA.mdb หรือ BBB.mdb ก็ได้)
คำถาม
ต้องเขียน Code ยังไงครับ ตอนนี้สามารถเขียนให้แสดงรายงานจากไฟล์ AAA.mdb ได้อย่างเดียว



Tag : .NET, Ms Access, Crystal Report, VS 2015 (.NET 4.x)









ประวัติการแก้ไข
2017-11-13 17:16:16
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-11-13 17:14:43 By : satanpig View : 3267 Reply : 21
 

 

No. 1



โพสกระทู้ ( 821 )
บทความ ( 0 )



สถานะออฟไลน์


เปลี่ยนไปใช้ออก Report จาก DataSet ครับ
https://www.thaicreate.com/dotnet/crystal-report-dataset-datatable.html

ที่ตัวโปรแกรมเราก็จะทำการ Query ข้อมูล
จะ Query จาก AAA หรือ BBB ก็ได้
จากนั้นเอาไปอัดเข้า DataSet เพื่อผูกเข้ากับ Report ครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-14 09:26:09 By : fonfire
 


 

No. 2



โพสกระทู้ ( 4,436 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

Access สามารถเชื่อมหลายๆไฟล์มาเป็นไฟล์เดียวเพื่อให้สะดวกต่อการจัดการได้นะครับ
111

https://support.office.com/th-th/article/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%99%E0%B8%B3%E0%B9%80%E0%B8%82%E0%B9%89%E0%B8%B2%E0%B8%AB%E0%B8%A3%E0%B8%B7%E0%B8%AD%E0%B9%80%E0%B8%8A%E0%B8%B7%E0%B9%88%E0%B8%AD%E0%B8%A1%E0%B9%82%E0%B8%A2%E0%B8%87%E0%B9%84%E0%B8%9B%E0%B8%A2%E0%B8%B1%E0%B8%87%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B8%A1%E0%B8%B9%E0%B8%A5%E0%B9%83%E0%B8%99%E0%B8%AD%E0%B8%B5%E0%B8%81%E0%B8%90%E0%B8%B2%E0%B8%99%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B8%A1%E0%B8%B9%E0%B8%A5%E0%B8%AB%E0%B8%99%E0%B8%B6%E0%B9%88%E0%B8%87%E0%B8%82%E0%B8%AD%E0%B8%87-Access-095ab408-89c7-45b3-aac2-58036e45fcf6

แต่ก่อนเคยเห็นโปรแกรม ACCELENT ของฝ่ายบัญชีเขามีครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-14 10:08:39 By : lamaka.tor
 

 

No. 3



โพสกระทู้ ( 17 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : fonfire เมื่อวันที่ 2017-11-14 09:26:09
รายละเอียดของการตอบ ::
เคยลองแปลงจากตรงนี้เหมือนกันครับ error ตรง connection string

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-14 11:55:40 By : satanpig
 


 

No. 4



โพสกระทู้ ( 821 )
บทความ ( 0 )



สถานะออฟไลน์


ใช้แบบ DataWizard ในการต่อ access หรือปล่าวครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-14 16:26:40 By : fonfire
 


 

No. 5



โพสกระทู้ ( 17 )
บทความ ( 0 )



สถานะออฟไลน์


error
Error ตอนรัน Code นี้
Code (VB.NET)
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data.OleDb

Public Class FRM010000
    Private Sub BtnReport_Click(sender As Object, e As EventArgs) Handles BtnReport.Click
        Dim objConn As New OleDbConnection
        Dim objCmd As New OleDbCommand
        Dim dtAdapter As New OleDbDataAdapter
        Dim ds As New DataSet
        Dim dt As DataTable
        Dim strConnString, strSQL As String
        strConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\testproject\Kroopanya.mdb"
        strSQL = "SELECT emp_id,Emp_name FROM employee WHERE emp_id = '" & txtEmp_id.Text & "' "
        objConn.ConnectionString = strConnString
        objConn.Open()
        dtAdapter = New OleDbDataAdapter(strSQL, objConn)
        dtAdapter.Fill(ds, "myDataTable")
        dt = ds.Tables(0)
        objConn.Close()
        objConn = Nothing
        MsgBox(ds.Tables.Count)
        MsgBox(dt.Rows.Count)
      
        Dim rpt As New ReportDocument()
        Dim directory As String = My.Application.Info.DirectoryPath
        'rpt.Load(directory & "\myCrystalReport1.rpt")
        rpt.Load("D:\Cloud\Dropbox\VBProject\QSHOP\Reporter\Reporter\myCrystalReport1.rpt")
        rpt.SetDataSource(dt)
        Me.CrystalReportViewer1.ReportSource = rpt
        Me.CrystalReportViewer1.Refresh()
    End Sub
End Class

Message Box จำนวน table จากตัวแปร ds ได้
Message Box จำนวน Row จากตัวแปร dt ได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-14 17:19:29 By : satanpig
 


 

No. 6



โพสกระทู้ ( 17 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 4 เขียนโดย : fonfire เมื่อวันที่ 2017-11-14 16:26:40
รายละเอียดของการตอบ ::
ใน VB.net ใช้เขียน OleDB Connection ผ่าน Connection String ดึงข้อมูลจากไฟล์ mdb ได้ data table ออกมาไปทำงานต่อครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-14 17:41:17 By : satanpig
 


 

No. 7



โพสกระทู้ ( 821 )
บทความ ( 0 )



สถานะออฟไลน์


error ทึ่เครื่องลูก หรือ เครื่องที่เขียนโปรแกรมครับ
เหมือนจะยังไม่ได้ลง crystal runtime เลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-14 17:42:39 By : fonfire
 


 

No. 8



โพสกระทู้ ( 17 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : fonfire เมื่อวันที่ 2017-11-14 17:42:39
รายละเอียดของการตอบ ::
เครื่องที่เขียนโปรแกรมครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-14 18:20:16 By : satanpig
 


 

No. 9



โพสกระทู้ ( 821 )
บทความ ( 0 )



สถานะออฟไลน์


Crystal report เป็นแบบผูกกับ dataset ไว้แล้วใช่ไหมครับ
และไม่ได้ผูกกับ aceess ใช่ไหมครับ

1. error เกิดที่บรรมัดไหนเหรอครับ
2. ลองเอาคำสั่ง setdatasource ออกก่อนดูครับ
ว่าได้ไหม
3. ถ้ายังไม่ได้ ลองทำไฟล์ report มาใหม่
แบบไม่ผูกกับข้อมูลอะไรเลย ว่าใช้ได้ไหม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-15 08:05:10 By : fonfire
 


 

No. 10



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

Code (C#)
ReportDocument cryRpt = new ReportDocument();
TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
Tables CrTables;

cryRpt.Load(MapPath("CrystalReport.rpt"));
crConnectionInfo.ServerName = "ICELand";
crConnectionInfo.DatabaseName = "MiniOPT";
crConnectionInfo.UserID = "sa";
crConnectionInfo.Password = "121212";

CrTables = cryRpt.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
    crtableLogoninfo = CrTable.LogOnInfo;
    crtableLogoninfo.ConnectionInfo = crConnectionInfo;
    CrTable.ApplyLogOnInfo(crtableLogoninfo);
}

CrystalReportViewer1.ReportSource = cryRpt;
CrystalReportViewer1.RefreshReport(); 



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-15 09:33:11 By : mr.win
 


 

No. 11

Guest


ตอบความคิดเห็นที่ : 9 เขียนโดย : fonfire เมื่อวันที่ 2017-11-15 08:05:10
รายละเอียดของการตอบ ::
ตอนออกแบบรายงาน ผู้กับ Dataset ที่สร้างขึ้นครับ ไม่ได้ผูกกับ Access
.......................................................................
1.ตอนนี้ฟอร์แมทฮาร์ดดิสใหม่ ลองติดตั้ง VS2015+Crystal Report ใหม่อีกที จุด Error เปลี่ยนครับ เป็น Error ตามในรูปนี้
Error DT To Crystal Rep.
............................
2.ถ้าเอาบรรทัดที่ 29 ..... rpt.SetDataSource(dt) ออกจะ Error ตอนแสดงตัวรายงาน แจ้งว่าไม่สามารถติดต่อฐานข้อมูลได้
...........................
3.ถ้าสร้างรายงานมาใหม่โดยไม่ผูกกับข้อมูลอะไรเลยรันรางงานได้ปกติ // แต่ต้องเอา rpt.SetDataSource(dt) ออกด้วย
..................................................

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-15 09:38:13 By : satanpig
 


 

No. 12

Guest


Code ไม่น่าผิดครับ

ีีสาเหตุ ที่มันโหลดฐานข้อมูลไม่ได้เพราะ runtime ของฐานข้อมูลกับโปรแกรมที่เรียกใช้ไม่ตรงกัน กล่าวคือ .mdb เป็นไฟล์ของ Access < 2007 ใช้ CLR 2.0 ซึ่งทำงานแบบ 32-bit ในขณะที่ โปรแกรมที่เรียกใช้ฐานข้อมูลไฟล์ .mdb ในที่นี้คือ VS2015 กลับใช้ CLR 4.0 ซึ่งทำงานแบบ 64-bit ที่ต้องใช้ driver แบบ 64-bit ในการใช้ฐานข้อมูล แต่จนถึงปัจจุบันยังไม่มีใครทำ driver 64-bit สำหรับไฟล์ .mdb หรืออาจจะไม่มีเลยก็เป็นได้

วิธีเลี่ยง
1. ใช้ Access 2007-2016 แบบ 64-bit บันทึกฐานข้อมูลเป็นไฟล์ .accdb
2. เปลี่ยนการคอมไพล์ของโปรแกรมใหม่ ตรง Target CPU เปลี่ยนจาก AnyCPU เป็น X86
3. อนุญาตให้โปรแกรมใช้ runtime แบบรวมมิตรได้...โดยแก้ไขไฟล์ app.config ของโปรเจค ในส่วน <configuration> ให้เพิ่ม runtime .NET 2.0ใน <startup> แบบนี้

<startup useLegacyV2RuntimeActivationPolicy="true"></startup>


แค่เพิ่ม useLegacyV2RuntimeActivationPolicy="true" นะครับ ของเดิมไม่ต้องเอาออก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-15 19:22:41 By : ขาจร
 


 

No. 13

Guest


ลืมอีกแล้ว....เลือกใช้แค่อย่างเดียวนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-15 19:30:15 By : ขาจร
 


 

No. 14

Guest


ตอบความคิดเห็นที่ : 13 เขียนโดย : ขาจร เมื่อวันที่ 2017-11-15 19:30:15
รายละเอียดของการตอบ ::
ที่ว่าเลือกใช้แค่อย่างเดียวคือ
วิธีเลี่ยง
1. ใช้ Access 2007-2016 แบบ 64-bit บันทึกฐานข้อมูลเป็นไฟล์ .accdb
2. เปลี่ยนการคอมไพล์ของโปรแกรมใหม่ ตรง Target CPU เปลี่ยนจาก AnyCPU เป็น X86
3. อนุญาตให้โปรแกรมใช้ runtime แบบรวมมิตรได้...โดยแก้ไขไฟล์ app.config ของโปรเจค ในส่วน <configuration> ให้เพิ่ม runtime .NET 2.0ใน <startup> แบบนี้
ใช้ 1 2 หรือ 3 แค่อย่างเดียวใช่ไหมครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-16 08:16:54 By : satanpig
 


 

No. 15



โพสกระทู้ ( 821 )
บทความ ( 0 )



สถานะออฟไลน์


ลองเปลี่ยน Target Framework เป็น 3.5 ดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-16 08:35:51 By : fonfire
 


 

No. 16



โพสกระทู้ ( 821 )
บทความ ( 0 )



สถานะออฟไลน์


ลองรันอันนี้ดูครับว่าได้ไหม

ปกติผมจะทำไฟล์ dataset กลาง ๆ มาอันหนึ่ง
แล้วใช้ไฟล์เดียวกับทุก report เลย
เวลาใช้ก็ไป query มา
แล้วอัดเข้า dataset นี้อีกที

http://upload.i4th.in.th/th/download.php?id=5A0CEAFD1
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-16 08:41:24 By : fonfire
 


 

No. 17

Guest


ตอบความคิดเห็นที่ : 14 เขียนโดย : satanpig เมื่อวันที่ 2017-11-16 08:16:54
รายละเอียดของการตอบ ::
ใช่ครับ...ที่ง่ายก็ 2 หรือ 3 เลือกใช้วิธีใดวิธีหนึ่ง ถ้าวิธีไหนไม่ได้ค่อยเปลี่ยน ห้ามทำพร้อมกันไม่งั้นตกอีรอบเดิม...จะได้ไม่ยุ่งยากไปหา MS Office มาลงใหม่

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-16 12:32:15 By : ขาจร
 


 

No. 18

Guest


แก้ไขได้แล้วครับ เพิ่ม startup ใน config
app.conf
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-16 17:55:18 By : satanpig
 


 

No. 19

Guest


app.config
ขอโทษทีอัพผิดรูปครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-16 17:57:30 By : satanpig
 


 

No. 20

Guest


ทำไมไม่ใส่เพิ่มอันที่มันมีอยู่แล้วครับ tag เดียวกัน...แต่จริงๆ ก็ไม่สำคัญหรอก...ยังไงก็ยินดีด้วยครับ

<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-16 18:55:15 By : ขาจร
 


 

No. 21



โพสกระทู้ ( 17 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 20 เขียนโดย : ขาจร เมื่อวันที่ 2017-11-16 18:55:15
รายละเอียดของการตอบ ::
ขอบคุณครับ
ขอบคุณทุกคนด้วยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-20 16:01:18 By : satanpig
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ถามเรื่อง VB.net + Crystal Report + Access Database ผ่านทาง Connection String
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่