erp系統(tǒng)定制相關(guān)文章列表 – 幣加德軟件 http://www.tzds42.cn 幣加德企業(yè)管理軟件 Sat, 15 Jan 2022 12:16:25 +0000 zh-CN hourly 1 https://wordpress.org/?v=5.8.5 利用erp系統(tǒng)開(kāi)發(fā)接口定制復(fù)雜軟件kf05-02 http://www.tzds42.cn/kf/kf05-02.html http://www.tzds42.cn/kf/kf05-02.html#respond Sun, 14 Nov 2021 11:14:03 +0000 http://www.tzds42.cn/?p=342 開(kāi)發(fā)復(fù)雜的報(bào)表外掛(使用VS自帶的.rdlc報(bào)表),建議使用Visual Studio 2013專(zhuān)業(yè)版、高級(jí)版或旗艦版,不要使用速成版或社區(qū)版(沒(méi)有集成報(bào)表開(kāi)發(fā)功能)。最終效果如下圖。

14224360f7bd3308bd4j6Wd5b

圖:復(fù)雜報(bào)表外掛最終效果

 

此復(fù)雜報(bào)表外掛具有如下特點(diǎn):

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

 

一、準(zhǔn)備SQL查詢(xún)語(yǔ)句

按前面“自定義報(bào)表/SQL命令行工具”介紹的方法,準(zhǔn)備查詢(xún)SQL語(yǔ)句,如下圖。

14224960f7bd39e2b885Gf4Z2

圖:使用SQL命令行工具準(zhǔn)備SQL查詢(xún)語(yǔ)句

 

二、編寫(xiě)外掛程序

按上一節(jié)介紹的方法建立項(xiàng)目W2,在W2上右鍵鼠標(biāo),在彈出菜單中選【添加】/【新建項(xiàng)】,如下圖。

14225560f7bd3f40732ToShMO

圖:添加數(shù)據(jù)集(默認(rèn)名稱(chēng)不要更改)

 

在打開(kāi)的DataSet1.xsd面板中,右鍵鼠標(biāo),如下圖。

14230060f7bd44810b8kPTbtr

圖:添加TableAdapter

 

在彈出的“添加連接”窗口,錄入數(shù)據(jù)庫(kù)服務(wù)器相關(guān)信息,如下圖。

  • 服務(wù)器名。精簡(jiǎn)數(shù)據(jù)庫(kù)如圖進(jìn)行填寫(xiě),如果是企業(yè)版數(shù)據(jù)庫(kù),請(qǐng)?zhí)顚?xiě)“.”(點(diǎn)表示本地,如果不是遠(yuǎn)程連接到ERP服務(wù)器寫(xiě)外掛程序,則需要把點(diǎn)改為ERP服務(wù)器的IP地址);
  • 登錄到服務(wù)器。精簡(jiǎn)數(shù)據(jù)庫(kù)的密碼是“17312319729@bijiade.cn”,企業(yè)版數(shù)據(jù)庫(kù)的密碼是在系統(tǒng)安裝配置的時(shí)候自己設(shè)置的。
  • 連接到數(shù)據(jù)庫(kù)。選bdERP開(kāi)頭的任意一個(gè)就行,外掛程序運(yùn)行時(shí)會(huì)根據(jù)賬套自動(dòng)切換。

14230560f7bd49cf3f3lw1p3f

圖:連接數(shù)據(jù)庫(kù)

 

根據(jù)TableAdapter配置向?qū)нM(jìn)行配置,如下圖。

14231160f7bd4f7edf4iRaqzS

圖:不要在連接字符串中包含敏感數(shù)據(jù)

 

14231960f7bd57de46eqvdLf6

圖:默認(rèn)下一步

 

14232660f7bd5e1f8e5ztzIii

圖:默認(rèn)下一步

 

粘貼準(zhǔn)備好的查詢(xún)SQL語(yǔ)句,點(diǎn)【完成】,如下圖。

14233160f7bd63c7ccdf7IflL

圖:粘貼準(zhǔn)備好的查詢(xún)SQL語(yǔ)句

 

執(zhí)行查詢(xún)SQL語(yǔ)句所得的數(shù)據(jù)表字段,如下圖。

14233860f7bd6a3e63fXM17rC

圖:查詢(xún)所得的數(shù)據(jù)表字段

 

在W2上右鍵鼠標(biāo),在彈出菜單中選【添加】/【新建項(xiàng)】,如下圖。

14234360f7bd6fe65dbmE3LKO

圖:添加報(bào)表文件(默認(rèn)名稱(chēng)不要更改)

 

在打開(kāi)的報(bào)表文件界面,右鍵“數(shù)據(jù)集”,選擇剛剛配置的數(shù)據(jù)集,如下圖。

14234960f7bd757b722q0FDHm

圖:選擇數(shù)據(jù)集

 

在報(bào)表設(shè)計(jì)界面,右鍵鼠標(biāo),可以插入文本框等等,也可以把左側(cè)的數(shù)據(jù)集下面的字段拖放到報(bào)表設(shè)計(jì)界面,如下圖。

14240460f7bd841ccffdViNhp

圖:報(bào)表設(shè)計(jì)

 

報(bào)表設(shè)計(jì)是最繁瑣最費(fèi)時(shí)間的事情,最終設(shè)計(jì)結(jié)果,如下圖。

14241360f7bd8d1c0fdx7ye2B

圖:報(bào)表設(shè)計(jì)結(jié)果

 

打開(kāi)Form1窗體,從工具箱拖放一個(gè)ReportViewer報(bào)表查看器到窗體,如下圖。

14242260f7bd961cb7aDmiAp7

圖:把報(bào)表查看器添加到窗體

 

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

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 =?“”; ?????????????//登錄用戶(hù)ID

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

public?string?_dbName =?“bdERP”; ?????????????????????//數(shù)據(jù)庫(kù)名稱(chēng)

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

public?string?_curDir =?@”..\..\”; ???????????????????//當(dāng)前目錄

 

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

 

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

{

_userID = userID; ??????????//傳遞用戶(hù)登錄ID

_serverIP = serverIP; ??????//服務(wù)器IP

_dbName = dbName; ??????????//數(shù)據(jù)庫(kù)名稱(chēng)

_saPassword = saPassword; ??//sa密碼

_curDir = curDir; ??????????//當(dāng)前目錄

MessageBox.Show(“用戶(hù)ID:”?+ _userID +?“\n數(shù)據(jù)庫(kù)服務(wù)器IP:”?+ _serverIP +?“\n數(shù)據(jù)庫(kù)名稱(chēng):”?+ _dbName +?“\nsa密碼:”?+ _saPassword +?“\n當(dāng)前目錄:”?+ _curDir,?“提示”);

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

}

 

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

{

//1.SQL查詢(xún)語(yǔ)句

string?sql =?@”

SELECT

a.c010 單號(hào), a.c020 日期, a.c200 銷(xiāo)售類(lèi)型, a.c210 客戶(hù)單號(hào),

a.c030 客戶(hù)代碼, c.c020 客戶(hù)名稱(chēng),

a.c090 聯(lián)系人, a.c091 聯(lián)系電話,

a.c070 交貨方式, a.c080 交貨地點(diǎn), ?a.c100 備注, a.c110 業(yè)務(wù)員,

b.c020 項(xiàng)次, b.c029 客戶(hù)料號(hào), b.c030 貨品代碼,

b.c050 品名規(guī)格, b.c060 單位, b.c069 含稅, b.c070 單價(jià), b.c071 含稅單價(jià),

b.c080 數(shù)量, b.c090 金額, b.c100 稅率, b.c101 稅額, b.c110 價(jià)稅合計(jì),

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.報(bào)表文件名(如果報(bào)表文件與外掛程序在同一目錄,直接寫(xiě)報(bào)表名稱(chēng)即可)

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

 

//3.綁定

Bind(sql, reportName);

}

///?<summary>

///?工具方法,執(zhí)行SQL查詢(xún)獲取數(shù)據(jù),并綁定到指定報(bào)表。

///?</summary>

///?<param name=”sql”>SQL查詢(xún)語(yǔ)句</param>

///?<param name=”reportName”>報(bào)表文件名</param>

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

{

DataTable?data =?new?DataTable(); ??????????????????????????//數(shù)據(jù)

try

{

//執(zhí)行SQL查詢(xún)獲取數(shù)據(jù)

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(); ?????????????????????//打開(kāi)數(shù)據(jù)庫(kù)連接

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

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

conn.Close(); ??????????????????????????????????????//關(guān)閉數(shù)據(jù)庫(kù)連接

}

//綁定到指定報(bào)表

ReportDataSource?rds =?new?ReportDataSource();

rds.Name =?“DataSet1”; ?????????????????//要與數(shù)據(jù)集屬性數(shù)據(jù)集名稱(chēng)要一致

rds.Value = data;

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

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

this.reportViewer1.LocalReport.ReportPath = reportName; ?//報(bào)表文件名

this.reportViewer1.RefreshReport();

}

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

}

}

}

以上代碼已經(jīng)在注釋中進(jìn)行了講解,看不懂也沒(méi)有關(guān)系,只要依葫蘆畫(huà)瓢,要改2個(gè)地方(上面代碼已說(shuō)明):其一是SQL查詢(xún)語(yǔ)句;其二是報(bào)表文件名稱(chēng)(注意路徑)。如下圖。

14243760f7bda551a3bLe3fbb

圖:代碼關(guān)鍵點(diǎn)(SQL查詢(xún)語(yǔ)句、報(bào)表文件名)

 

三、配置外掛程序

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

14244260f7bdaacf7deY7BsyX

圖:選.NET Framework 3.5

 

提醒:這里輸出類(lèi)型保持默認(rèn),為了便于測(cè)試。測(cè)試正常后,可以改為“類(lèi)庫(kù)”。

拷貝外掛程序到ERP的外掛目錄下,并確認(rèn)運(yùn)行正常,如下圖。

14244860f7bdb05ce5fIsLdMQ

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

 

打開(kāi)【系統(tǒng)設(shè)置】/【外掛程序接口】,選擇子系統(tǒng),配置外掛程序接口參數(shù),測(cè)試是否可以正常打開(kāi)外掛程序,最后點(diǎn)【保存并應(yīng)用】,如下圖。

14245360f7bdb5e661cMW2Kjv

圖:外掛程序接口

 

四、總結(jié)

報(bào)表外掛的意義。幣加德ERP系統(tǒng)的單據(jù)打印都是基于Excel的(參見(jiàn)“第23章 單據(jù)打印格式設(shè)計(jì)”),一般情況下無(wú)需開(kāi)發(fā).rdlc報(bào)表,除非現(xiàn)有報(bào)表滿(mǎn)足不了業(yè)務(wù)需求。這里以開(kāi)發(fā).rdlc報(bào)表為例,不僅僅為了說(shuō)明報(bào)表開(kāi)發(fā)本身,而且可以學(xué)習(xí)到如何集成ERP中的用戶(hù)ID、賬套數(shù)據(jù)庫(kù)等,無(wú)需另外配置數(shù)據(jù)庫(kù)連接和建立賬戶(hù)體系。

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

///?<summary>

///?鉤子方法。

///?</summary>

///?<param name=”userID”>用戶(hù)登錄ID</param>

///?<param name=”serverIP”>服務(wù)器IP</param>

///?<param name=”dbName”>數(shù)據(jù)庫(kù)名稱(chēng)</param>

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

///?<param name=”curDir”>當(dāng)前目錄</param>

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

{

_userID = userID; ??????????//傳遞用戶(hù)登錄ID

label1.Text =?“登錄用戶(hù)ID:”?+ _userID;//標(biāo)簽顯示

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

}

使用Visual Studio 2013開(kāi)發(fā).rdlc報(bào)表的關(guān)鍵是準(zhǔn)備SQL查詢(xún)語(yǔ)句、報(bào)表設(shè)計(jì)(最費(fèi)時(shí)間)。報(bào)表設(shè)計(jì)有如下特點(diǎn)(注意點(diǎn)),如下圖。

1)拖放設(shè)計(jì)。數(shù)據(jù)字段按照SQL查詢(xún)語(yǔ)句的順序列示,直接拖放進(jìn)行報(bào)表設(shè)計(jì),簡(jiǎn)單直觀。

2)設(shè)計(jì)時(shí)可以調(diào)整紙張大小。報(bào)表默認(rèn)大小是A4縱向(可以更改),寬度不能超過(guò)“紙張寬度+邊距”,否則打印預(yù)覽時(shí)多出了很多空白頁(yè)(如果拉窄了寬度后,打印預(yù)覽時(shí)還是有空白頁(yè),則需要把“報(bào)表”的“ConsumeContainerWhitesapce”屬性值改為T(mén)rue,此屬性意思“指使在容器中的內(nèi)容增長(zhǎng)時(shí),是占用還是保留容器中的最小空白。只要內(nèi)容右側(cè)和下方的空白受到影響。”)。縱向不用留空間,在打印時(shí)根據(jù)數(shù)據(jù)行數(shù)自動(dòng)拉高。

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

4)數(shù)據(jù)區(qū)可多級(jí)分組。報(bào)表的核心在于數(shù)據(jù)區(qū),可以分組匯總等。

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

提醒:如果報(bào)表外掛程序在集成到ERP前運(yùn)行得好好的,集成后出錯(cuò),最大的可能性有2種:其一如果提示“此程序集的運(yùn)行時(shí)比當(dāng)前加載的運(yùn)行時(shí)新,無(wú)法加載此程序集”,則是因?yàn)檫x錯(cuò)了.NET版本(參見(jiàn)“圖30-28?選.NET Framework 3.5”);其二如果報(bào)表無(wú)法顯示,則是因?yàn)閳?bào)表路徑錯(cuò)了,或者報(bào)表文件Report1.rdlc沒(méi)有和外掛程序一起復(fù)制到ERP的外掛程序目錄中。

14250160f7bdbdcf6e0GE4qwb

圖:報(bào)表設(shè)計(jì)特點(diǎn)(注意點(diǎn))

 

14250760f7bdc3ad12a8x5LnY

圖:把“報(bào)表”的“ConsumeContainerWhitesapce”屬性值改為T(mén)rue

 

]]>
http://www.tzds42.cn/kf/kf05-02.html/feed 0
利用erp系統(tǒng)開(kāi)發(fā)接口定制簡(jiǎn)單外掛kf05-01 http://www.tzds42.cn/kf/kf05-01.html http://www.tzds42.cn/kf/kf05-01.html#respond Sun, 14 Nov 2021 11:12:47 +0000 http://www.tzds42.cn/?p=339 外掛程序介紹

外掛程序作用:擴(kuò)充ERP功能。滿(mǎn)足企業(yè)的行業(yè)化、個(gè)性化需求。

外掛程序接口特點(diǎn):

  • 無(wú)需系統(tǒng)程序源碼。外掛程序集成到ERP中,并且會(huì)把登錄的用戶(hù)ID傳遞給外掛程序;
  • 多種編程語(yǔ)言支持。可用.NET平臺(tái)任一編程語(yǔ)言,只需指定文件名、類(lèi)名、方法名即可;
  • 外掛程序分門(mén)別類(lèi)。所有外掛程序放置目錄固定,都在ERP根目錄下的“外掛程序”子目錄下,并且子目錄與子系統(tǒng)一一對(duì)應(yīng),比如:“W1.采購(gòu)系統(tǒng)”外掛程序的目錄如下:

ERP根目錄\外掛程序\W1\

外掛程序集成在幣加德ERP的菜單欄中,如下圖。

定制erp系統(tǒng)-外掛程序位置

圖:外掛程序接口及系統(tǒng)集成位置

 

外掛程序?qū)崙?zhàn)

本節(jié)使用Visual Studio 2013(速成版、社區(qū)版、專(zhuān)業(yè)版、高級(jí)版、旗艦版都可以,前面2個(gè)版本是免費(fèi)的)來(lái)開(kāi)發(fā)外掛程序,如果你使用的是其他版本的Visual Studio,也可以參照學(xué)習(xí),大同小異。本節(jié)先用完整詳細(xì)的步驟介紹一個(gè)最簡(jiǎn)單的外掛程序的開(kāi)發(fā),通過(guò)此外掛的學(xué)習(xí),可以完全掌握外掛的開(kāi)發(fā)方法。然后用較簡(jiǎn)潔的步驟介紹如何開(kāi)發(fā)報(bào)表外掛,這個(gè)案例很實(shí)用,企業(yè)的程序開(kāi)發(fā)人員或ERP代理服務(wù)商經(jīng)常需要從企業(yè)ERP中取數(shù),開(kāi)發(fā)分析報(bào)表或開(kāi)發(fā)定制格式的打印單據(jù)。

一、一個(gè)簡(jiǎn)單的外掛程序

(1)編寫(xiě)外掛程序

①打開(kāi)Visual Studio 2013,點(diǎn)【文件】/【新建】/【項(xiàng)目】,如下圖。

定制erp系統(tǒng)-新建項(xiàng)目

圖:新建項(xiàng)目

 

②在“新建項(xiàng)目”窗口,選擇【Visual C#】/【W(wǎng)indows 窗體應(yīng)用程序】,名稱(chēng)為“W1”,如下圖。

定制erp系統(tǒng)-新建項(xiàng)目-Win窗體程序

圖:選擇Windows 窗體應(yīng)用程序

 

③從“工具箱”中拖一個(gè)Label到窗體設(shè)計(jì)界面,如下圖。

定制erp系統(tǒng)-Win窗體程序設(shè)計(jì)

圖:拖一個(gè)標(biāo)簽到設(shè)計(jì)面板

 

④雙擊設(shè)計(jì)面板,打開(kāi)代碼編輯窗口,輸入以下代碼,如下圖。

public?string?_userID =?“”; ????//登錄用戶(hù)ID

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

{

_userID = userID; ??????????//傳遞用戶(hù)登錄ID

label1.Text =?“登錄用戶(hù)ID:”?+ _userID;//標(biāo)簽顯示

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

}

定制erp系統(tǒng)-Win窗體程序代碼編寫(xiě)

圖:寫(xiě)程序代碼

 

提醒:不管寫(xiě)什么類(lèi)型的外掛程序,都需要上面的代碼,相當(dāng)于ERP與外掛程序之間約定的一種協(xié)議,目的在于把ERP系統(tǒng)當(dāng)前的登錄用戶(hù)ID傳遞給外掛程序,并打開(kāi)外掛程序的主窗體。除此之外,外掛程序與普通的Windows窗體程序沒(méi)有任何區(qū)別。

外掛程序可以查詢(xún)ERP的后臺(tái)數(shù)據(jù)表,但千萬(wàn)別修改(刪除)數(shù)據(jù),這是一個(gè)基本的原則。否則出錯(cuò)后無(wú)法核查是ERP的問(wèn)題,還是外掛程序的問(wèn)題。

 

⑤鼠標(biāo)右鍵項(xiàng)目名稱(chēng),在上下文菜單中選【屬性】,在打開(kāi)的窗口中,“目標(biāo)框架”選擇“.NET Framework 2.0”(為了兼容老電腦),“輸出類(lèi)型”選“類(lèi)庫(kù)”(如果選“Windows應(yīng)用程序”,用戶(hù)可以越過(guò)權(quán)限設(shè)置,直接運(yùn)行外掛程序),如下圖。

定制erp系統(tǒng)-Win窗體程序設(shè)置輸出類(lèi)型

圖:設(shè)置項(xiàng)目屬性

 

⑥再次點(diǎn)【啟動(dòng)】,系統(tǒng)會(huì)報(bào)錯(cuò)(因上一步中改變了目標(biāo)框架),修正錯(cuò)誤,如下圖。

定制erp系統(tǒng)-Win窗體程序調(diào)試

圖:修改錯(cuò)誤

 

⑦再次點(diǎn)【啟動(dòng)】,系統(tǒng)會(huì)彈出無(wú)法直接啟動(dòng)類(lèi)庫(kù)項(xiàng)目的錯(cuò)誤,這正是所要的,如下圖。

定制erp系統(tǒng)-Win窗體程序啟動(dòng)

圖:彈出無(wú)法直接啟動(dòng)類(lèi)庫(kù)項(xiàng)目的錯(cuò)誤

 

⑧打開(kāi)外掛程序的輸出目錄(參見(jiàn)“圖30-3 選擇Windows 窗體應(yīng)用程序”選定的位置),并把外掛程序復(fù)制到ERP的外掛程序目錄,如下圖。

定制erp系統(tǒng)-Win窗體程序生成

定制erp系統(tǒng)-ERP系統(tǒng)外掛程序目錄

圖:拷貝外掛程序至ERP外掛目錄

 

(2)接口定義

①打開(kāi)【系統(tǒng)設(shè)置】/【外掛程序接口】,選擇子系統(tǒng),配置外掛程序接口參數(shù),測(cè)試是否可以正常打開(kāi)外掛程序,最后點(diǎn)【保存并應(yīng)用】,如下圖。

外掛程序接口參數(shù):

  • 模塊代碼:外掛子系統(tǒng)代碼 + 3位流水碼。
  • 模塊名稱(chēng):最簡(jiǎn)潔的文字介紹外掛程序。“模塊代碼、模板名稱(chēng)”會(huì)顯示在ERP系統(tǒng)的外掛菜單中,參見(jiàn)“圖30-1 外掛程序接口及系統(tǒng)集成位置”。
  • 文件名稱(chēng):不含路徑,含擴(kuò)展名。
  • 類(lèi)名稱(chēng):類(lèi)名稱(chēng)必須是“命名空間.類(lèi)名”。
  • 方法名稱(chēng):方法名稱(chēng)必須是公有的,否則無(wú)法正常調(diào)用。
  • 備注:較詳盡的文字介紹外掛程序。

定制erp系統(tǒng)-ERP系統(tǒng)外掛程序打開(kāi)測(cè)試

圖:外掛程序接口

 

提醒:外掛程序?+ ERP數(shù)據(jù)字典?=?無(wú)限擴(kuò)展?ERP?功能!

(無(wú)需“幣加德ERP系統(tǒng)”源代碼)

]]>
http://www.tzds42.cn/kf/kf05-01.html/feed 0
erp系統(tǒng)開(kāi)發(fā)自定義報(bào)表kf04 http://www.tzds42.cn/kf/kf04.html http://www.tzds42.cn/kf/kf04.html#respond Sun, 14 Nov 2021 11:09:34 +0000 http://www.tzds42.cn/?p=336 自定義報(bào)表作用:擴(kuò)充ERP報(bào)表功能。ERP中沒(méi)有的報(bào)表模塊,可用自定義報(bào)表來(lái)實(shí)現(xiàn)。

自定義報(bào)表特點(diǎn):只需寫(xiě)好?SQL?語(yǔ)句,并在“SQL?命令行工具”里面執(zhí)行正常,

再通過(guò)配置查詢(xún)條件即可。

自定義報(bào)表集成在幣加德ERP的菜單欄中,如下圖。

14141760f7bb399f10dpqef3D

圖:自定義報(bào)表步驟及系統(tǒng)集成位置

 

自定義報(bào)表實(shí)戰(zhàn)

準(zhǔn)備SQL語(yǔ)句。按照上一小節(jié)介紹的方法準(zhǔn)備SQL語(yǔ)句,如下圖。

14142460f7bb401608bE1oKTH

圖:準(zhǔn)備SQL語(yǔ)句

 

報(bào)表設(shè)計(jì)。打開(kāi)【系統(tǒng)設(shè)置】/【自定義報(bào)表設(shè)計(jì)】,如下圖。

14142960f7bb45938c92hdAB3

圖:自定義報(bào)表

 

點(diǎn)【新增】,按如下圖所示的步驟進(jìn)行操作。上面“報(bào)表代碼/報(bào)表名稱(chēng)”會(huì)顯示在ERP導(dǎo)航菜單的“自定義報(bào)表”的子菜單中;中間的SQL語(yǔ)句是核心,表示要查詢(xún)的內(nèi)容;下面“指定查詢(xún)字段”部分,操作類(lèi)似于前面章節(jié)所講的自定義字段,用來(lái)指定查詢(xún)條件,這部分指定的查詢(xún)字段必須存在于中間的SQL語(yǔ)句中,且“字段名”與SQL中的查詢(xún)字段名要匹配,否則查詢(xún)會(huì)出錯(cuò)。

自定義報(bào)表的SQL語(yǔ)句,最常用的就是從多個(gè)表取數(shù),比如要分析客戶(hù)的銷(xiāo)貨情況,則需要從客戶(hù)表、銷(xiāo)售訂單表、銷(xiāo)售訂單身表、銷(xiāo)售出庫(kù)單表、銷(xiāo)售出庫(kù)單身表等取數(shù),把這些表按照主鍵、外鍵的關(guān)系連接起來(lái)進(jìn)行查詢(xún),連接查詢(xún)的基礎(chǔ)知識(shí)在前面“自定義字段”部分已經(jīng)講解過(guò)。

14143660f7bb4c756cbskC9Sg

圖:自定義報(bào)表設(shè)計(jì)(修改界面,新增類(lèi)似)

 

報(bào)表顯示。在上圖中點(diǎn)【保存并預(yù)覽】,將打開(kāi)剛剛設(shè)計(jì)的報(bào)表,并把它集成到系統(tǒng)導(dǎo)航菜單中(參見(jiàn)“圖:自定義報(bào)表步驟及系統(tǒng)集成位置”)。

自定義報(bào)表的查詢(xún)條件分為2個(gè)部分:

基礎(chǔ)查詢(xún)條件:顯示在自定義報(bào)表的表格上方,只支持等值查詢(xún),通常把最常用的查詢(xún)條件放在這里。

高級(jí)查詢(xún)條件:當(dāng)點(diǎn)【查詢(xún)】時(shí)打開(kāi)“高級(jí)查詢(xún)條件”窗口,除了支持等值查詢(xún)外,還支持其他查詢(xún)操作符,比如:大于、大于等于、小于、小于等于、不等于、相似于。

當(dāng)點(diǎn)“高級(jí)查詢(xún)條件”窗口的【確定】時(shí)關(guān)閉該條件窗口,執(zhí)行查詢(xún),此時(shí)的查詢(xún)條件是“基礎(chǔ)查詢(xún)條件”和“高級(jí)查詢(xún)條件”的疊加。當(dāng)再次點(diǎn)【查詢(xún)】時(shí),系統(tǒng)會(huì)保留上次的查詢(xún)條件,方便在此基礎(chǔ)上進(jìn)行更改,以再行查詢(xún)。

14144260f7bb521622d5cNOG0

圖:報(bào)表顯示

 

提醒:自定義報(bào)表和ERP內(nèi)置的報(bào)表類(lèi)似,可以導(dǎo)出Excel,也可以打印,如下圖。整個(gè)過(guò)程只需要寫(xiě)好SQL語(yǔ)句,外加簡(jiǎn)單配置即可,無(wú)需寫(xiě)程序代碼!!!

14144860f7bb5831f499QI24e

圖:打印預(yù)覽

]]>
http://www.tzds42.cn/kf/kf04.html/feed 0
erp系統(tǒng)開(kāi)發(fā)數(shù)據(jù)庫(kù)表定義數(shù)據(jù)字典kf02 http://www.tzds42.cn/kf/kf02.html http://www.tzds42.cn/kf/kf02.html#respond Sun, 14 Nov 2021 11:06:27 +0000 http://www.tzds42.cn/?p=331 幣加德ERP以“數(shù)據(jù)字典”的形式公開(kāi)了后臺(tái)數(shù)據(jù)庫(kù)表的定義,打開(kāi)【系統(tǒng)設(shè)置】/【數(shù)據(jù)字典】,如下圖。通過(guò)數(shù)據(jù)字典不僅可以查看后臺(tái)數(shù)據(jù)庫(kù)表結(jié)構(gòu),還可以修改后臺(tái)數(shù)據(jù)庫(kù)表結(jié)構(gòu),甚至還可以新建后臺(tái)表。本章只用到查看功能,后續(xù)章節(jié)再講解其他高級(jí)功能。

erp系統(tǒng)開(kāi)發(fā)-ERP數(shù)據(jù)字典

圖:數(shù)據(jù)庫(kù)字典

提醒:通過(guò)數(shù)據(jù)字典可以深入理解幣加德ERP的后臺(tái)數(shù)據(jù)庫(kù)的邏輯,不僅在自定義字段時(shí)用得到,而且在后續(xù)章節(jié)的自定義表單、自定義報(bào)表、外掛程序也需要。


參考:

數(shù)據(jù)字典通過(guò)對(duì)數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)的定義,來(lái)描述數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)的邏輯內(nèi)容。 數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,也就是對(duì)“數(shù)據(jù)流圖”中包含的所有元素的定義的集合。數(shù)據(jù)字典還有另一種含義,是在“數(shù)據(jù)庫(kù)設(shè)計(jì)”時(shí)用到的一種工具,用來(lái)描述數(shù)據(jù)庫(kù)中基本表的設(shè)計(jì),主要包括:字段名 、數(shù)據(jù)類(lèi)型、主鍵、 外鍵 等描述表的屬性的內(nèi)容。

 

]]>
http://www.tzds42.cn/kf/kf02.html/feed 0