Monday, July 6, 2009

Crystal report viewer error when upgrade solution visual studio



the server tag 'CR:CrystalReportViewer' is ambiguous. Please modify the associated registration that is causing ambiguity and pick a new tag prefix.

  • ประเด็นมีอยู่ว่า เขียนโปรเจคด้วย vs2005 แล้วไปเปิดบน vs2008 ซึ่งอยู่บน windows 7 rc
  • เกิดปํญหาเกี่ยวกับ crystal report viewer อันที่เป็น component ตัวหนึ่งอ่ะนะ
  • ดูเหมือน จะมี library crystal report ของ 2 version แล้วระบบเลยงง น่าจะใช่นะ
  • วิธีแก้ให้เรา remove reference Crystal report version เดิมที่เป็นของ vs2005 ออกก่อน
  • โดยเราสามารถ remove ได้โดยคลิกขวาที่ web project เราแล้วก็เลือก Property Pages ที่ References ก็จัดการ remove และ add libray ของ crystal report ที่เป็นเวอร์ชั่นใหม่
  • เสร็จแล้วก็ Ok ซะหน่อย จากนั้นคิดว่า ใน web.config น่าจะมีการเพิ่ม tag assembly ของ crystal - report เวอร์ชั่นนี้เข้าไปนะ น่าจะนะไม่แน่ใจ ส่วนนี้ถ้าเทียบกับ application ก็ประมาณเพิ่ม dll ให้โปรเจคไว้ using อีกทีประมาณนั้น
  • ถ้าใน web.config มี assembly crystal report เวอร์ชั่นเก่า เราก็ลบ tag เลยน่าจะได้เหมือนกัน
  • สิ่งที่ต้องทำต่อไปคือ build โปรเจคเราดูขึ้น error อยู่หรือป่าว ถ้าขึ้นให้คลิกที่ error เปิดไฟล์ที่มีปัญหาส่วนมากที่เป็นจะเป็นไฟล์ aspx ที่มีการใช้ component crystal report viewer อ่ะนะ view แบบ source


  • เราจะเห็น มีการเรียกใช้ assembly เวอร์ชั่นเดิมในที่นี้เป็น 10.2... ซึ่งเราจะไม่ใช้แหละ เราจะใช้ 10.5... แทน เราก็ comment หรือ ลบ register tag เวอร์ชั่นเดิมออก ใส่เวอร์ชั่นใหม่เข้าไปแทน
  • เราสามารถ ลบ และ เพิ่ม crystal report viewer ตัวใหม่ได้โดยใช้ชื่อเดิมนั่นแหละ จะทำให้มีการ register assembly เวอร์ชั่นใหม่ให้เรา แต่ถ้ามี register เวอร์ชั่นเก่าก็ลบมันออกได้เลย
  • ทำการลบ tag register ที่เป็นเวอร์ชั่นเดิมทุกไฟล์แล้วลอง build ใหม่ดูน่าจะผ่านไม่มี error แหละ

ลองมั่วก่อนหน้านี้


  • เคยลองเข้าไปที่ C:\windows\assembly\GAC_MSIL\CrystalDecisions.Web แล้วทำการลบ assembly ที่เวอร์ชั่นต่ำกว่า ให้เหลือแต่เวอร์ชั่นใหม่ ซึ่งมันไม่ได้เกี่ยวอาไรกันเลยเพราะว่ายังไวก็ต้องไปแก้ crystal report viewer ที่ไฟล์ aspx ที่มีปัญหาให้ register เวอร์ชั่นใหม่เหมือนเดิม

สรุป
  • แก้ที่ web.config หรือ remove และ add reference ผ่าน property page
  • หลังจากนั้นก็ตามไปแก้ไฟล์ aspx ที่ register ของ crystal report viewer ให้ register เวอร์ชั่นที่เราตั้งใน web.config

ทิป
  • register ของเว็บน่าจะคล้ายกับ using ของฝั่ง application นะคิดว่า ซึ่งใน code behind ก็ใช้ using
  • ส่วนใน web.config ที่มี add assembly น่าจะประมาณ add reference ของฝั่ง app นั่นแหละ
  • อีกเรื่องคือ ถ้าเว็บเรายังไม่มีไฟล์ web.config เราสามารถเพิ่มได้โดยการ add reference ที่ Bin directory เราก็จะได้ web.config โดยอัตโนมัติเลยหว่า

อ้างอิง

2 comments:

  1. ใช้ .NET 3.5 อยู่แต่ server ใช้ .NET 2.0

    จะแก้งานอย่างไรดีจาก crystal report viewer 10.5.3700
    เป็น crystal report viewer 10.2.3600

    ลองเปลี่ยนเองแล้วไม่ได้เลย

    ReplyDelete
  2. ออกตัวก่อน ผมก็มั่วไปตามประสา อย่าไปเชื่ออะไรใน blog มากครับ

    Try
    บน server ท่าน @กรรกรคอมพิวเตอร์ มีตัว runtime ของ crystal report veiwer 10.5 หรือยังครับ ผมว่าไม่ต้องเปลี่ยน ค่าอะไรตามโพสนี้ก็ได้ แต่ให้เราลองติดตั้งตัว runtime ของ 10.5 ตามโพสนี้ดูก่อนนะครับเผื่อช่วยได้

    http://juuier.blogspot.com/2008/07/c-library-crystal-report.html

    ไม่แน่ใจว่าจะช่วยได้หรือป่าวนะครับ สู้ๆ ครับ โชคดี

    แก้ปัญหาได้หรือไม่ได้ยังไง ช่วยแบ่งปันความรู้ ด้วยก็จะขอบพระคุณอย่างมากเลยครับ

    ReplyDelete

Popular Posts