讯光科技
其他問題

其他問題

當前位置:首頁>常見問答>其他問題


如何實現英文字母以區分大小寫的形式排序?如aa AA bb BB 應排序為 AA BB aa bb? 方法: 1. 在SqlServer中,字元類型的欄位元都可以設定定序,更改此欄位的定序為二進位編碼排序,這樣order by field就會按照你說的規則,大寫在上,小寫在下。 2. 或者...order by ...,ascii(abc),...,但ascii只針對abc之第一位。
可否做到user讀取資料時不能跨廠查詢資料,但對某些User又可以開放。 這個功能可以使用InfoCommand的安全管理功能,如果你的table有欄位存放廠別這個資料,那只要設定InfoCommand的SiteControl=true,SiteField設為你存放廠別的欄位名稱,比如SiteNO。這樣,你只要在登陸或者網頁開啟的時候,設定CliUtils.fSiteCode=目前廠別,這樣無論怎樣查詢資料,都會自動在查詢資料的Where與劇中自動加入where SiteNO = 目前廠別的語句,另外,如果你想讓某些User例外時,可以在InfoCommand的SecExcept欄位中設定例外的群組部分,這樣隸屬這個群組的User將不受此SiteControl管制。
資料表中有不同廠區的資料在一起,如何依不同的User帳號個別顯示與維護? 提供2種方法,請參考: 1.設定Server端InfoCommand的SiteControl為true,並設定SiteFieldName為廠區代號的欄位名稱。這樣,在EEPNetClient登錄的時候,只要去控制這個Login者的廠區代號,就可自動過濾InfoCommand所傳回的資料,如: CliUtils.fSiteCode = "A"; // 設定該User的廠區資訊 在開啟資料的時候,系統會自動下達: select * from table where sitefield='A' 2.第二種方式是利用Menu Utility中的Parameters來控制,就是不同廠區開啟不同的Menu,然后每個menu可以設定Item Parameters參數比如A,這樣,在Form開啟以及查詢的時候,用程式取得 Form.ItemParameters內容去控制InfoDataSet.Setwhere()也可以達到以上的效果。
如何依據不同登入使用者取得不同的資料? 在EEP的InfoCommand有安全管理功能。要求,資料表要有一個欄位存放資料的擁有者的UserID。 1. InfoCommand的SecStyle設定為ssByUser 2. SecFieldName屬性設定為上面所說的欄位名稱,比如CREATE_USER。 3. SecExcept屬性可以設定為不需受限制的Group的id,比如經理的id,多個id可以分號隔開。 還有另外一種方法,就是在Client的每次Query資料的時候,都自動加一個條件,比如CREATE_USER=CliUtils.fLoginUser。
請問如何在c#下Sql指令? 可以通過調用CliUtils.ExecuteSql(string ModuleName, string DataSetName, string sSql, bool IsCursor, string sCurProject)方法來實現。
insert 圖片上去oracle blob欄位的時候出現錯誤訊息: ‘ORA-00972: ID 太長’,但實際欄位中並無ID欄位? 目前在Oracle的圖形欄位並無法使用UpdateComp去存檔,可以用以下方法針對非Sql資料庫: 1.打開Server的設計畫面,找到UpdateComponent,在FieldAttrs中增加一項,將這個圖形欄位設定其UpdateEnable為False,這樣系統就不會去主動更改這個欄位。 2.為UpdateComponent增加兩個事件BeforeModify,AfterInsert private void ucMaster_AfterInsert(object sender, UpdateComponentAfterInsertEventArgs e) { ModifyPhoto(); } private void ucMaster_BeforeModify(object sender, UpdateComponentBeforeModifyEventArgs e) { ModifyPhoto(); } private void ModifyPhoto() { if (ucMaster.CurrentRow["Photo"] != DBNull.Value)//Photo為blob欄位 { string key = ucMaster.CurrentRow["EmployeeID"].ToString();//Employee為Key欄位 byte[] photo = (byte[])ucMaster.CurrentRow["Photo"]; SqlParameter param = new SqlParameter("ph", photo); ArrayList list = new ArrayList(); list.Add(param); ExecuteSql(string.Format("Update Employees set Photo = @ph where EmployeeID={0}", key), ucMaster.conn, ucMaster.trans, list); } } 若是多key: string key1 = ucMaster.CurrentRow["Key1"].ToString(); string key2 = ucMaster.CurrentRow["Key2"].ToString(); ExecuteSql(string.Format("Update Employees set Photo = @ph where key1={0}and key2={1}", key1, key2), ucMaster.conn, ucMaster.trans, list);
如何提高Client的效能? 對於Web和Window的效能部分。 首先,我們可通過WebDateSet和InfoDataSet的packectRecord來控制Client資料下載的筆數。在MasterDetail設計時,盡可能使用View+Master+Detail的模式設計。 其次,在Web設計時,我們可以將CatchDataSet設為true。 在有過多數據交互的邏輯時,請將這些邏輯放在Server上完成,通過ServerMethod來完成。
如何修改Wizard使用的Template? 首先請程式師了解為EEPWizard所製作的Template有它的特定性,因此在畫面上的所有元件只可增加,不可隨意刪除template中的元件或更改元件的名稱。這裡所說的修改即將Template中的一些屬性進行一些小修改。如:當我們在Win開發時,我們希望在關閉Form時,系統能夠檢查是否在編輯狀態,如果在編輯狀態希望出現提示。那?我們可以將修改對應的InfoBindingSource的CloseProtect設定為true。 在修改Wizard使用的Template請注意修改的文件所在位置: Win Form請修改安裝目錄下的AddIns/ Templates下的Project Web Form請修改安裝目錄下的EEPWebClient/ Templates下aspx文件
C#語法改寫VB語法,SERVER METHOD範例? 原文C# ServerMethod public object CallTest(object[] objParam) { string str = objParam[0].ToString(); string sql= "select avg(UnitPrice) as AvgPrice from [order details] Where ProductID="; sql = sql + str; DataSet Tmp = ExecuteSql("view", sql, true); string retval=Tmp.Tables[0].Rows[0][ "AvgPrice"].ToString(); Thread.SlEEP(5000); object ret; ret = new object[] { 0, retval}; return ret; } 改寫為VB: Public Function CallTest(ByVal objParam() As Object) As Object() Dim str As String str = objParam(0).ToString() Dim sql As String sql = "select avg(UnitPrice) as AvgPrice from [order details] Where ProductID=" sql = sql + str Dim tmp As DataSet tmp = ExecuteSql("view", sql, True) Dim retval As String retval = tmp.Tables(0).Rows(0)("AvgPrice").ToString() System.Threading.Thread.SlEEP(5000) Dim ret As Object ret = New Object() {0, retval} Return ret End Function
在EEP2006中,我想獲得專案的名稱和資料庫的名稱 CliUtils中有很多系統變量可以讀到。大部分以小寫f開頭的都是。 CliUtils.fLoginDB 資料庫別名 CliUtils.fCurrentProject 當前solution 
在VS中,Format的格式有哪些類型? 可有文件可參考? 在VS的系統中,不管是String.Format或是使用到資料格式的地方,都可以用以下的Format格式來處理資料的輸出格式,請參考以下資料: {0:format specifier} 0 是參數索引,它指示列中要格式化的資料元素;因此,通常用零來指示第一個元素。 format specifier 前面有一個冒號 (:),它由一個或多個字母組成,指示如何格式化資料。可以使用的格式說明符取決於要格式化的資料類型:日期、數位或其他類型。下表顯示了不同資料類型的格式設置運算式的示例。有關格式設置運算式的更多資訊,請參見格式化類型。 格式設置運算式: 應用於此資料類型 ,說明 Price: {0:C} numeric/decimal 顯示“Price:”,後跟以貨幣格式表示的數字。貨幣格式取決於通過 Page 指令或 Web.config 檔中的區域性屬性指定的區域性設置。 {0:D4} integer(不能和小數一起使用。) 在由零填充的四個字元寬的欄位中顯示整數。 {0:N2}% numeric 顯示精確到小數點後兩位元的數字,後跟“%”。 {0:000.0} numeric/decimal 四捨五入到小數點後一位元的數字。不到三位元的數字用零填充。 {0:D} date/datetime 長日期格式(“Thursday, August 06, 1996”)。日期格式取決於頁或 Web.config 檔的區域性設置。 {0:d} date/datetime 短日期格式(“12/31/99”)。 {0:yy-MM-dd} date/datetime 用數字的年-月-日表示的日期(96-08-06)。 唯讀 當此列處於編輯模式時,該列中的資料是否顯示在可編輯的控制項中。 asp.net資料格式的Format—DataFormatString 我們在呈現資料的時候,不要將未經修飾過的資料呈現給使用者。例如金額一萬元,如果我們直接顯示「10000」,可能會導致使用者看成一千或十萬,造成使用者閱讀資料上的困擾。若我們將一萬元潤飾後輸出為「NT$10,000」,不但讓使比較好閱讀,也會讓使用者減少犯錯的機會。 下列畫面為潤飾過的結果: 上述資料除了將DataGrid Web 控制項以顏色來區隔記錄外,最主要將日期、單價以及小計這三個計欄位的資料修飾的更容易閱讀。要修飾欄位的輸出,只要設定欄位的DataFormatString 屬性即可;其使用語法如下: DataFormatString="{0:格式字串}" 我們知道在DataFormatString 中的 {0} 表示資料本身,而在冒號後面的格式字串代表所們希望資料顯示的格式;另外在指定的格式符號後可以指定小數所要顯示的位元數。例如原來的資料為「12.34」,若格式設定為 {0:N1},則輸出為「12.3」。其常用的數值格式如下表所示: 格式字串 資料 結果 "{0:C}" 12345.6789 $12,345.68 "{0:C}" -12345.6789 ($12,345.68) "{0:D}" 12345 12345 "{0:D8}" 12345 00012345 "{0:E}" 12345.6789 1234568E+004 "{0:E10}" 12345.6789 1.2345678900E+004 "{0:F}" 12345.6789 12345.68 "{0:F0}" 12345.6789 12346 "{0:G}" 12345.6789 12345.6789 "{0:G7}" 123456789 1.234568E8 "{0:N}" 12345.6789 12,345.68 "{0:N4}" 123456789 123,456,789.0000 "Total: {0:C}" 12345.6789 Total: $12345.68 其常用的日期格式如下表所示: 格式 說明 輸出格式 d 精簡日期格式 MM/dd/yyyy D 詳細日期格式 dddd, MMMM dd, yyyy f 完整格式 (long date + short time) dddd, MMMM dd, yyyy HH:mm F完整日期時間格式(long date + long time) dddd, MMMM dd, yyyy HH:mm:ss g 一般格式 (short date + short time) MM/dd/yyyy HH:mm G 一般格式 (short date + long time) MM/dd/yyyy HH:mm:ss m,M 月日格式 MMMM dd s 適中日期時間格式 yyyy-MM-dd HH:mm:ss t 精簡時間格式 HH:mm T 詳細時間格式 HH:mm:ss string.format格式結果 String.Format (C) Currency: . . . . . . . . ($123.00) (D) Decimal:. . . . . . . . . -123 (E) Scientific: . . . . . . . -1.234500E+002 (F) Fixed point:. . . . . . . -123.45 (G) General:. . . . . . . . . -123 (N) Number: . . . . . . . . . -123.00 (P) Percent:. . . . . . . . . -12,345.00 % (R) Round-trip: . . . . . . . -123.45 (X) Hexadecimal:. . . . . . . FFFFFF85 (d) Short date: . . . . . . . 6/26/2004 (D) Long date:. . . . . . . . Saturday, June 26, 2004 (t) Short time: . . . . . . . 8:11 PM (T) Long time:. . . . . . . . 8:11:04 PM (f) Full date/short time: . . Saturday, June 26, 2004 8:11 PM (F) Full date/long time:. . . Saturday, June 26, 2004 8:11:04 PM (g) General date/short time:. 6/26/2004 8:11 PM (G) General date/long time: . 6/26/2004 8:11:04 PM (M) Month:. . . . . . . . . . June 26 (R) RFC1123:. . . . . . . . . Sat, 26 Jun 2004 20:11:04 GMT (s) Sortable: . . . . . . . . 2004-06-26T20:11:04 (u) Universal sortable: . . . 2004-06-26 20:11:04Z (invariant) (U) Universal sortable: . . . Sunday, June 27, 2004 3:11:04 AM (Y) Year: . . . . . . . . . . June, 2004 (G) General:. . . . . . . . . Green (F) Flags:. . . . . . . . . . Green (flags or integer) (D) Decimal number: . . . . . 3 (X) Hexadecimal:. . . . . . . 00000003
若要自行修改EEP中的某個元件,是否有比較推薦的方式? 有兩種方法: 1. 使用partial關鍵字來擴展類。 2. 使用Inheritance繼承來實現一個新類。 下面以WebDateTimePicker詳細說明兩種方法的區別: ---------------------------------------------------------- 一、代碼實現,同樣都需要新增一個WebDateTimePickerExtend.cs 1.partial:在新文件中加入 public partial class WebDateTimePicker { public void NewFunction(){} } 同時還要修改原WebDateTimePicker.cs中的WebDateTimePicker聲明為public partial class WebDateTimePicker 2.繼承:在新文件中加入 public class WebDateTimePickerExtend: WebDateTimePicker { public void NewFunction(){} } ---------------------------------------------------------- 二、修改和新增屬性和方法 1.partial: 可實現新增方法和屬性,但不能修改原有的方法和屬性。 2.繼承:可實現新增方法和屬性,同時也可以override原有的非私有方法和屬性。 ---------------------------------------------------------- 三、類的應用 1.partial:由於類只是被擴展,所以新增的部分還是屬於原類的,這樣WebDateTimePicker就有了新的方法和屬性。 2.繼承:只有繼承的子類WebDateTimePickerExtend才有新方法和屬性,所以要用的話,要換一個類。 具體選擇哪種方法要視情況而定: (1)使用擴展的方法,可以不變動其他調用此類的原代碼,但是不能更改WebDateTimePicker原有的方法。 (2)使用繼承的方法,可以變更WebDateTimePicker原有的方法,但其他調用此類的代碼也要相應的修改。
如何取得AD的其他資訊,除了USER和GROUP之外,例如:電話地址等等? 在Srvtools中的ADClass.cs檔中有個GetADUserFormGroup()方法,可以參照此方法修改。
如何寄發html格式的EMail? 使用System.Net.Mail.MailMessage而不是System.Web.Mail.MailMessage MailMessage using System.Net; using System.Net.Mail; System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); message.From = new MailAddress("toby@infolight.com"); message.To.Add(new MailAddress("toby@infolight.com.tw")); message.Subject = "Test"; message.Body = "Toby Test123"; message.IsBodyHtml = true;//設置成html格式 SmtpClient Client = new SmtpClient("infolight.com", 25); Client.EnableSsl = false; Client.UseDefaultCredentials = false; Client.Credentials = new NetworkCredential("toby", "toby"); Client.Send(message);
如何下載IIS Server上的文件? 你可在IIS Server上的檔通過下面的方法使檔進行下載。 FileInfo file = new FileInfo(filePath);//filePath為你在Server上路徑 if (file.Exists) { Response.Clear(); Response.Buffer = false; Response.ContentType = "application/x-msdownload"; Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); Response.AddHeader("Content-Length", file.Length.ToString()); Response.Filter.Close(); Response.WriteFile(file.FullName); Response.End(); }
想從EEP7改用EEP2006開發,請問有什麼好的方式解決從EEP的系統table更新到EEP2006的系統table? 在EEPNetServer的DB設定中,按“CreateSystemTable”,先選擇"Typical Create",這是為了防止更新後缺少部份Typical的Table而引起不能正常使用EEPManager的功能,之後再選擇"EEP7 migration",這部分是為了針對原EEP系統建立的Table做修正功能。
如何透過SeverMethod來修改密碼? string sql = "update USERS"+ " set PWD = '" + EncryptPassword(param[0].ToString(), "A88888") .Replace("'", "''") + "'" + " where USERID='" + param[0].ToString() + "'";ExecuteCommand(sql, conn, tr);
如何在EEP埋Log, 並可快速查詢Log
1.找一支Server端程式加入以下Function

        /// <summary>
        /// 寫入EEP LOG
        /// </summary>
        /// <param name="method"></param>
        /// <param name="message"></param>
        public void EEPLog(string method, string message)
        {
            SysEEPLog eeplog = new SysEEPLog(this.GetClientInfo(), SysEEPLog.LogStyleType.UserDefine, SysEEPLog.LogTypeType.Error, DateTime.Now, method, message);
            eeplog.Log();
        }

2.在需要log的地方,例如server method傳入值,回傳值,自己下SQL語法,呼叫外部API時,用這句即可
this.EEPLog("模組名稱","訊息");

範例:
this.EEPLog(MethodBase.GetCurrentMethod().Name, strSQL);

3.在EEPNetServer上System Log要打開,並且一定要存到DB,不要存text file

4.EEPManager就可以直接查詢log,因此比一般log機制,要去作業系統log查看方便