午夜日韩福利_天堂va蜜桃一区二区三区_亚州国产精品久久久_亚洲一区二区欧美_色老头在线一区二区三区_成人va在线观看_爱情岛亚洲播放路线_电影k8一区二区三区久久_日韩成人18_欧美freesex黑人又粗又大

ERP系統管理軟件
ERP系統管理軟件

利用erp系統開發接口定制復雜軟件kf05-02


開發復雜的報表外掛(使用VS自帶的.rdlc報表),建議使用Visual Studio 2013專業版、高級版或旗艦版,不要使用速成版或社區版(沒有集成報表開發功能)。最終效果如下圖。

14224360f7bd3308bd4j6Wd5b

圖:復雜報表外掛最終效果

 

此復雜報表外掛具有如下特點:

  • 幣加德ERP自動把當前登錄的用戶ID、數據庫服務器IP、賬套對應的后臺數據庫名稱、登錄賬號、登錄密碼傳遞給外掛程序,所以不僅僅可以開發報表外掛,充滿想象;
  • 無需幣加德ERP的源代碼;
  • 外掛可以使用不同的開發語言和平臺(幣加德ERP使用C#語言,.NET 2.0),外掛使用C#語言,.NET 3.5(不可以使用.NET 2.0,因為沒有報表功能;也不可以使用.NET 4.0及以上,因為架構與.NET 2.0不兼容??梢允褂肰B.NET語言);
  • 外掛程序需要引用幣加德ERP的任何.dll文件,外掛程序可以獨立運行,為了防止用戶直接運行,可以編譯成.dll動態鏈接庫文件,由ERP調用;
  • 外掛程序的代碼量非常小,基礎框架已經搭好,只需要依葫蘆畫瓢,重點在于取數SQL語句和報表格式調整(這是個細致且費時間的活兒);
  • 此報表外掛案例,包含了報表設計中常用的功能:頁面大小的設置、頁頭、頁尾、分組匯總、每頁重復顯示列頭、公司LOGO、簽章透明、分頁等,報表加入圖片的功能很容易擴展到加入條碼、二維碼。報表可以導出到Excel/PDF/Word。

 

一、準備SQL查詢語句

按前面“自定義報表/SQL命令行工具”介紹的方法,準備查詢SQL語句,如下圖。

14224960f7bd39e2b885Gf4Z2

圖:使用SQL命令行工具準備SQL查詢語句

 

二、編寫外掛程序

按上一節介紹的方法建立項目W2,在W2上右鍵鼠標,在彈出菜單中選【添加】/【新建項】,如下圖。

14225560f7bd3f40732ToShMO

圖:添加數據集(默認名稱不要更改)

 

在打開的DataSet1.xsd面板中,右鍵鼠標,如下圖。

14230060f7bd44810b8kPTbtr

圖:添加TableAdapter

 

在彈出的“添加連接”窗口,錄入數據庫服務器相關信息,如下圖。

  • 服務器名。精簡數據庫如圖進行填寫,如果是企業版數據庫,請填寫“.”(點表示本地,如果不是遠程連接到ERP服務器寫外掛程序,則需要把點改為ERP服務器的IP地址);
  • 登錄到服務器。精簡數據庫的密碼是“17312319729@bijiade.cn”,企業版數據庫的密碼是在系統安裝配置的時候自己設置的。
  • 連接到數據庫。選bdERP開頭的任意一個就行,外掛程序運行時會根據賬套自動切換。

14230560f7bd49cf3f3lw1p3f

圖:連接數據庫

 

根據TableAdapter配置向導進行配置,如下圖。

14231160f7bd4f7edf4iRaqzS

圖:不要在連接字符串中包含敏感數據

 

14231960f7bd57de46eqvdLf6

圖:默認下一步

 

14232660f7bd5e1f8e5ztzIii

圖:默認下一步

 

粘貼準備好的查詢SQL語句,點【完成】,如下圖。

14233160f7bd63c7ccdf7IflL

圖:粘貼準備好的查詢SQL語句

 

執行查詢SQL語句所得的數據表字段,如下圖。

14233860f7bd6a3e63fXM17rC

圖:查詢所得的數據表字段

 

在W2上右鍵鼠標,在彈出菜單中選【添加】/【新建項】,如下圖。

14234360f7bd6fe65dbmE3LKO

圖:添加報表文件(默認名稱不要更改)

 

在打開的報表文件界面,右鍵“數據集”,選擇剛剛配置的數據集,如下圖。

14234960f7bd757b722q0FDHm

圖:選擇數據集

 

在報表設計界面,右鍵鼠標,可以插入文本框等等,也可以把左側的數據集下面的字段拖放到報表設計界面,如下圖。

14240460f7bd841ccffdViNhp

圖:報表設計

 

報表設計是最繁瑣最費時間的事情,最終設計結果,如下圖。

14241360f7bd8d1c0fdx7ye2B

圖:報表設計結果

 

打開Form1窗體,從工具箱拖放一個ReportViewer報表查看器到窗體,如下圖。

14242260f7bd961cb7aDmiAp7

圖:把報表查看器添加到窗體

 

雙擊Form1窗體,如圖30-26,清空窗體中所有的代碼,并把下面的代碼復制粘貼進去。

14242960f7bd9d5d715kFUBK8

圖:Form1代碼窗口

 

using?Microsoft.Reporting.WinForms;

using?System;

using?System.Collections.Generic;

using?System.ComponentModel;

using?System.Data;

using?System.Data.SqlClient;

using?System.Drawing;

using?System.Linq;

using?System.Text;

using?System.Threading.Tasks;

using?System.Windows.Forms;

namespace?W2

{

public?partial?class?Form1?:?Form

{

public?string?_userID =?“”; ?????????????//登錄用戶ID

public?string?_serverIP =?@”.\_MSSQL2005″;?//服務器IP(如果是SQL企業版,則為“.”)

public?string?_dbName =?“bdERP”; ?????????????????????//數據庫名稱

public?string?_saPassword =?“17312319729@bijiade.cn”;?//sa密碼

public?string?_curDir =?@”..\..\”; ???????????????????//當前目錄

 

public?Form1(){?InitializeComponent();?}

 

public?void?ShowMe(string?userID,?string?serverIP,?string?dbName,?string?saPassword,?string?curDir)//鉤子方法

{

_userID = userID; ??????????//傳遞用戶登錄ID

_serverIP = serverIP; ??????//服務器IP

_dbName = dbName; ??????????//數據庫名稱

_saPassword = saPassword; ??//sa密碼

_curDir = curDir; ??????????//當前目錄

MessageBox.Show(“用戶ID:”?+ _userID +?“\n數據庫服務器IP:”?+ _serverIP +?“\n數據庫名稱:”?+ _dbName +?“\nsa密碼:”?+ _saPassword +?“\n當前目錄:”?+ _curDir,?“提示”);

base.Show();//顯示窗體

}

 

private?void?Form1_Load(object?sender,?EventArgs?e)

{

//1.SQL查詢語句

string?sql =?@”

SELECT

a.c010 單號, a.c020 日期, a.c200 銷售類型, a.c210 客戶單號,

a.c030 客戶代碼, c.c020 客戶名稱,

a.c090 聯系人, a.c091 聯系電話,

a.c070 交貨方式, a.c080 交貨地點, ?a.c100 備注, a.c110 業務員,

b.c020 項次, b.c029 客戶料號, b.c030 貨品代碼,

b.c050 品名規格, b.c060 單位, b.c069 含稅, b.c070 單價, b.c071 含稅單價,

b.c080 數量, b.c090 金額, b.c100 稅率, b.c101 稅額, b.c110 價稅合計,

b.c150 摘要

FROM SAL020 a

LEFT JOIN SAL021 b ON b.c010=a.c010

LEFT JOIN BAS010 c ON c.c010=a.c030

WHERE 1=1 AND a.c061<>’Y’

AND a.c010=’XCK-21060001′

“;

//2.報表文件名(如果報表文件與外掛程序在同一目錄,直接寫報表名稱即可)

string?reportName = _curDir +?@”Report1.rdlc”;

 

//3.綁定

Bind(sql, reportName);

}

///?<summary>

///?工具方法,執行SQL查詢獲取數據,并綁定到指定報表。

///?</summary>

///?<param name=”sql”>SQL查詢語句</param>

///?<param name=”reportName”>報表文件名</param>

private?void?Bind(string?sql,?string?reportName)

{

DataTable?data =?new?DataTable(); ??????????????????????????//數據

try

{

//執行SQL查詢獲取數據

string?connStr =?“Data Source=”?+ _serverIP +?@”;Initial Catalog=”?+ _dbName +?“;Persist Security Info=True;”?+

“User ID=sa;Password=”?+ _saPassword;

using?(SqlConnection?conn =?new?SqlConnection())

{

conn.ConnectionString = connStr;

conn.Open(); ?????????????????????//打開數據庫連接

SqlDataAdapter?adapt =?new?SqlDataAdapter(sql, conn);//實例化適配器

adapt.Fill(data); ???????????????????????????????????//獲取數據

conn.Close(); ??????????????????????????????????????//關閉數據庫連接

}

//綁定到指定報表

ReportDataSource?rds =?new?ReportDataSource();

rds.Name =?“DataSet1”; ?????????????????//要與數據集屬性數據集名稱要一致

rds.Value = data;

this.reportViewer1.LocalReport.DataSources.Clear();

this.reportViewer1.LocalReport.DataSources.Add(rds);

this.reportViewer1.LocalReport.ReportPath = reportName; ?//報表文件名

this.reportViewer1.RefreshReport();

}

catch?(Exception?ex) {?MessageBox.Show(“出錯了:\n”?+ ex.Message,?“提示”,?MessageBoxButtons.OK,?MessageBoxIcon.Error); }

}

}

}

以上代碼已經在注釋中進行了講解,看不懂也沒有關系,只要依葫蘆畫瓢,要改2個地方(上面代碼已說明):其一是SQL查詢語句;其二是報表文件名稱(注意路徑)。如下圖。

14243760f7bda551a3bLe3fbb

圖:代碼關鍵點(SQL查詢語句、報表文件名)

 

三、配置外掛程序

鼠標右鍵W2,在彈出菜單中選【屬性】,目標框架選.NET 3.5,如下圖。

14244260f7bdaacf7deY7BsyX

圖:選.NET Framework 3.5

 

提醒:這里輸出類型保持默認,為了便于測試。測試正常后,可以改為“類庫”。

拷貝外掛程序到ERP的外掛目錄下,并確認運行正常,如下圖。

14244860f7bdb05ce5fIsLdMQ

圖:拷貝外掛程序到ERP的外掛目錄下

 

打開【系統設置】/【外掛程序接口】,選擇子系統,配置外掛程序接口參數,測試是否可以正常打開外掛程序,最后點【保存并應用】,如下圖。

14245360f7bdb5e661cMW2Kjv

圖:外掛程序接口

 

四、總結

報表外掛的意義。幣加德ERP系統的單據打印都是基于Excel的(參見“第23章 單據打印格式設計”),一般情況下無需開發.rdlc報表,除非現有報表滿足不了業務需求。這里以開發.rdlc報表為例,不僅僅為了說明報表開發本身,而且可以學習到如何集成ERP中的用戶ID、賬套數據庫等,無需另外配置數據庫連接和建立賬戶體系。

幣加德ERP外掛接口規范。會傳遞如下這些參數給外掛程序,外掛程序可以不使用,或者部分使用,但是不能缺少這些參數,順序也不能改變。

///?<summary>

///?鉤子方法。

///?</summary>

///?<param name=”userID”>用戶登錄ID</param>

///?<param name=”serverIP”>服務器IP</param>

///?<param name=”dbName”>數據庫名稱</param>

///?<param name=”saPassword”>sa密碼</param>

///?<param name=”curDir”>當前目錄</param>

public?void?ShowMe(string?userID,?string?serverIP,?string?dbName,?string?saPassword,?string?curDir)//鉤子方法

{

_userID = userID; ??????????//傳遞用戶登錄ID

label1.Text =?“登錄用戶ID:”?+ _userID;//標簽顯示

base.Show();//顯示窗體

}

使用Visual Studio 2013開發.rdlc報表的關鍵是準備SQL查詢語句、報表設計(最費時間)。報表設計有如下特點(注意點),如下圖。

1)拖放設計。數據字段按照SQL查詢語句的順序列示,直接拖放進行報表設計,簡單直觀。

2)設計時可以調整紙張大小。報表默認大小是A4縱向(可以更改),寬度不能超過“紙張寬度+邊距”,否則打印預覽時多出了很多空白頁(如果拉窄了寬度后,打印預覽時還是有空白頁,則需要把“報表”的“ConsumeContainerWhitesapce”屬性值改為True,此屬性意思“指使在容器中的內容增長時,是占用還是保留容器中的最小空白。只要內容右側和下方的空白受到影響。”)。縱向不用留空間,在打印時根據數據行數自動拉高。

3)數據表是一個整體。當在設計時插入表格,表格是一個整體,但是列頭在多頁時重復顯示功能時不時卡殼(tablix“Tablix2”具有無效的?TablixMember。TablixColumnHierarchy?中所有?TablixMember?元素的?RepeatOnNewPage?屬性必須設置為?false。),所以建議把標題欄刪除,手工增加文本框代替,放在頁眉處,這樣每頁都會顯示。

4)數據區可多級分組。報表的核心在于數據區,可以分組匯總等。

5)頁眉/頁腳。頁腳可以插入頁碼,加上印章(透明處理參見第23章)等。

提醒:如果報表外掛程序在集成到ERP前運行得好好的,集成后出錯,最大的可能性有2種:其一如果提示“此程序集的運行時比當前加載的運行時新,無法加載此程序集”,則是因為選錯了.NET版本(參見“圖30-28?選.NET Framework 3.5”);其二如果報表無法顯示,則是因為報表路徑錯了,或者報表文件Report1.rdlc沒有和外掛程序一起復制到ERP的外掛程序目錄中。

14250160f7bdbdcf6e0GE4qwb

圖:報表設計特點(注意點)

 

14250760f7bdc3ad12a8x5LnY

圖:把“報表”的“ConsumeContainerWhitesapce”屬性值改為True

 


評論 |0|


購買流程:1.下載試用 -> 2.購買注冊碼 -> 3.系統注冊!

蘇ICP備17048491號 ? 蘇州幣加德軟件研發有限公司

聯系人:陳生 173 1231 9729

幣加德ERP系統微信二維碼幣加德ERP系統視頻教程

午夜日韩福利_天堂va蜜桃一区二区三区_亚州国产精品久久久_亚洲一区二区欧美_色老头在线一区二区三区_成人va在线观看_爱情岛亚洲播放路线_电影k8一区二区三区久久_日韩成人18_欧美freesex黑人又粗又大
青青草原综合久久大伊人精品| 91九色对白| 一区二区三区 在线观看视频| 国产校园另类小说区| 欧美一级艳片视频免费观看| 一级日韩一区在线观看| 裸体丰满少妇做受久久99精品 | 免费成人深夜小野草| 亚洲成在人线在线播放| 一区二区三区在线观看视频| 成人欧美一区二区三区视频网页| 国产欧美一区二区精品性| 26uuu国产一区二区三区| 欧美成人video| 日韩欧美高清在线| 欧美电影免费观看完整版| 欧美一级久久久| 欧美一区二区在线看| 在线播放视频一区| 欧美日韩一区久久| 欧美色图第一页| 欧美日韩国产精品成人| 欧美日韩高清影院| 欧美人狂配大交3d怪物一区| 欧美日韩免费视频| 欧美精品色一区二区三区| 7777女厕盗摄久久久| 91精品国产综合久久小美女| 欧美一卡二卡在线观看| 欧美变态凌虐bdsm| 久久综合给合久久狠狠狠97色69| 精品国产免费一区二区三区四区| 精品国产乱码久久久久久久久| 欧美变态口味重另类| 久久久亚洲欧洲日产国码αv| 久久久不卡影院| 国产精品视频yy9299一区| 综合久久久久久| 夜夜精品视频一区二区| 午夜精品久久久久久久久久久| 日本视频中文字幕一区二区三区| 麻豆一区二区99久久久久| 国产一区二区成人久久免费影院 | 国产精品久久久久aaaa| 国产精品夫妻自拍| 亚洲黄色免费电影| 偷窥国产亚洲免费视频| 久久精品国产精品青草| 国产一本一道久久香蕉| 成人ar影院免费观看视频| 俄罗斯精品一区二区三区| 精品免费国产| 一区二区精品视频| 欧美日韩国产高清一区二区三区| 欧美videossexotv100| 国产欧美精品一区二区色综合| 国产精品高潮久久久久无| 亚洲图片欧美视频| 极品美女销魂一区二区三区 | 国产精品国产三级国产a| 亚洲蜜臀av乱码久久精品| 亚洲成人资源在线| 寂寞少妇一区二区三区| 99麻豆久久久国产精品免费| 精品国产乱码久久久久久蜜柚| 亚洲二区三区四区| 欧美日本一道本| 26uuu色噜噜精品一区二区| 亚洲猫色日本管| 久久精品国产色蜜蜜麻豆| 99re这里都是精品| 久久国产主播精品| 91久久精品一区二区| 精品国产一区二区精华| 亚洲免费三区一区二区| 久久国产三级精品| 91国产在线播放| 日韩国产伦理| 8x福利精品第一导航| 国产欧美精品一区aⅴ影院| 亚洲国产精品嫩草影院| 国产一区二区免费看| 国产精品久久久久久久久久久久冷 | 蜜臀av国产精品久久久久| 成人精品国产福利| 欧美深深色噜噜狠狠yyy| 欧美色男人天堂| 国产福利一区在线| 国产一区二区在线看| 国产成人免费观看| 一区二区在线不卡| 久久综合给合久久狠狠狠97色69| 亚洲一区中文日韩| 大美女一区二区三区| 欧美日韩精品久久久免费观看| 欧美伦理影视网| 亚洲欧洲成人自拍| 激情综合网天天干| 国产在线精品日韩| 欧美日韩日日摸| 亚洲人成影院在线观看| 国产麻豆精品一区二区| 久久一区二区三区av| 欧美人动与zoxxxx乱| 亚洲乱码国产乱码精品精可以看 | 99久久久免费精品国产一区二区| 欧美性色黄大片人与善| 日韩欧美一区中文| 亚洲国产人成综合网站| av亚洲精华国产精华精| 色综合网色综合| 国产欧美日产一区| 久久丁香综合五月国产三级网站| 国产精品乱码视频| 欧美精品视频www在线观看| 亚洲精品写真福利| 成人免费看黄yyy456| 亚洲v日韩v欧美v综合| 久久色.com| 久久精品国产亚洲5555| 欧美动漫一区二区| 欧美成人r级一区二区三区| 亚洲成年人网站在线观看| 99re资源| 欧美精选一区二区| 亚洲成av人片观看| 国产精品一区二区不卡视频| 欧美日韩你懂得| 亚洲国产欧美在线人成| 懂色中文一区二区三区在线视频 | 日韩欧美国产一区二区在线播放 | 欧美韩国日本精品一区二区三区| 91精品国产色综合久久不卡电影 | 欧美无砖砖区免费| 亚洲免费资源在线播放| 91色婷婷久久久久合中文| 欧美日韩中文字幕精品| 夜夜嗨av一区二区三区中文字幕| 91亚洲精品久久久蜜桃| 欧美日韩高清一区| 亚洲国产综合91精品麻豆| 不卡一卡2卡3卡4卡精品在| 91精品黄色片免费大全| 蜜桃在线一区二区三区| 欧美亚洲免费在线| 国产精品视频看| 99精品国产99久久久久久白柏| 欧美色图免费看| 日韩av中文字幕一区二区三区| 久久久精品动漫| 久久久精品影视| 国产91富婆露脸刺激对白| 在线这里只有精品| 亚洲图片欧美一区| 蜜桃传媒视频第一区入口在线看| 久久久久国产精品人| 国产成人丝袜美腿| 欧美色爱综合网| 天堂成人国产精品一区| 日本不卡高清视频一区| 1区2区3区国产精品| av成人免费观看| 精品国产乱码久久久久久夜甘婷婷 | 午夜午夜精品一区二区三区文| 亚洲国产电影在线观看| 99久久综合精品| 欧美一区二区三区日韩| 国内精品久久久久影院一蜜桃| 色域天天综合网| 视频一区中文字幕| 午夜午夜精品一区二区三区文| 一区二区三区在线视频免费观看| 国产美女在线精品免费观看| 久久久久国产免费免费| 99久久久国产精品免费蜜臀| 7777精品久久久大香线蕉| 另类小说综合欧美亚洲| 一本高清dvd不卡在线观看| 亚洲不卡一区二区三区| 手机成人在线| 亚洲国产成人av网| 日韩欧美亚洲精品| 亚洲一区二三区| 视频一区二区精品| 亚洲成人av在线电影| 一区二区在线观看网站| 天天亚洲美女在线视频| 色综合色狠狠天天综合色| 五月婷婷综合在线| 伊人色综合久久天天五月婷| 亚洲成人av一区二区三区| 一本久久a久久精品vr综合| 性欧美大战久久久久久久久| 亚洲精品二区| 人禽交欧美网站| 欧美亚洲国产一区二区三区 | 欧美四级电影在线观看| 久久不见久久见免费视频7| 欧美日韩极品在线观看一区| 国产又黄又大久久|