2014年4月30日 星期三

VB.NET 簡單的使用類別中的類別下的屬性

參考引用來源
--

 Public Class Factory

    Private sAddress As String
    Private sTEL As String
    Private objEmp As New Employees

    Public Property Address() As String
        Get
            Return sAddress
        End Get
        Set(ByVal value As String)
            sAddress = value
        End Set
    End Property

    Public Property TEL() As String
        Get
            Return sTEL
        End Get
        Set(ByVal value As String)
            sTEL = value
        End Set
    End Property

    Public Property Employees() As Employees
        Get
            Return objEmp
        End Get
        Set(ByVal value As Employees)
            objEmp = value
        End Set
    End Property
End Class

Public Class Employees
    Private bWork As Boolean
    Private sName As String


    Public Property Work() As Boolean
        Get
            Return bWork
        End Get
        Set(ByVal value As Boolean)
            bWork = value
        End Set
    End Property

    Public Property Name() As String
        Get
            Return sName
        End Get
        Set(ByVal value As String)
            sName = value
        End Set
    End Property

End Class

Dim ft As New Factory
 ft.Address = "地球村台灣區台中路112號"

 '簡短寫法
 With ft.Employees
     .Name = "Tom"
     .Work = False
 End With
 '或用一般寫法
 ft.Employees.Name = "Tom"
 ft.Employees.Work = False


vbnet mssql varbinary Image

參考引用來源
--
Imports System.Data.SqlClient

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'save image
        Dim conn As New SqlConnection("Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;")
        conn.Open()
        Dim cmd As New SqlCommand("INSERT INTO tableName (imageField) VALUES(@image)", conn)
        Dim p As New SqlParameter("@image", SqlDbType.VarBinary)
        Dim ms As New IO.MemoryStream
        PictureBox1.Image.Save(ms, Drawing.Imaging.ImageFormat.Png)
        p.Value = ms.ToArray
        cmd.ExecuteNonQuery()
        conn.Close()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'retrieve image
        Dim conn As New SqlConnection("Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;")
        Dim cmd As New SqlCommand("SELECT imageField FROM tableName WHERE someField = @value", conn)
        Dim p As New SqlParameter("@value", SqlDbType.Int)
        p.Value = 1
        Dim o As Object = cmd.ExecuteScalar

        If o IsNot Nothing Then
            PictureBox1.Image = Image.FromStream(New IO.MemoryStream(DirectCast(o, Byte())))
        End If
    End Sub

End Class

2014年4月29日 星期二

vbnet Techusers.net 網站

Techusers.net
--
很多技術文章!

關於C#的列印紙張自訂

參考引用:關於C#的列印紙張自訂
--
方法一:

0.使用的紙張類型的代碼
System.Drawing.Printing.PrintDocument PDSize = new System.Drawing.Printing.PrintDocument();
for(int i=0 ; i < PDSize.PrinterSettings.PaperSizes.Count;i++)
{
MessageBox.Show(i.ToString() + " = " + PDSize.PrinterSettings.PaperSizes[i].PaperName);
}
1.找出指定的的常用紙張大小

            while (size.PaperName != "A5")
            {
                i++;
                size = PDSize.PrinterSettings.PaperSizes[i];
            }
            size = PDSize.PrinterSettings.PaperSizes[i];


2.再來就是設定紙張
System.Drawing.Printing.PaperSize size = PDSize.PrinterSettings.PaperSizes[5];
MessageBox.Show(size.PaperName);
printDocument.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Paper", size.Width, size.Height);

參考資料:
MSDN - PaperSize.RawKind 屬性
WIKI - Paper size
Visual C# Developer Center

方法二:
直接設定列印紙張!


            System.Drawing.Printing.PaperSize printPageSize = new System.Drawing.Printing.PaperSize("Lable", 364, 197);//列印90mm*50mm的標籤紙

            printPageSize.RawKind = 150;

            printDocument.DefaultPageSettings.PaperSize = printPageSize;      
         
            printDialog.AllowSomePages = true;
            printDialog.ShowHelp = true;
            printDialog.Document = printDocument;
            printDialog.PrinterSettings.PrinterName = "TSC TTP-243E Plus";//自動選擇印表機名稱
            printDialog.PrinterSettings.DefaultPageSettings.PaperSize = printPageSize;

c# PrintDocument 设置自定义纸张大小的示例

參考引用來源:c# PrintDocument 设置自定义纸张大小的示例
--
Net 提供的打印类PrintDocument 非常简洁易用,不过在实际应用开发中往往需要对纸张进行自定义,尤其是需要进行票据打印时。这个问题也困扰了我许久,经过查阅相关的资料和多次尝试,发现 其实也很简单。下面的示例就是我在.Net2.0已经验证可行的办法:


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Printing;

namespace PrintService
{
    class AFCSPrinter :
    {
        /*页面打印委托*/
        public delegate void DoPrintDelegate(Graphics g, ref bool HasMorePage);

        PrintDocument iSPriner = null;
        bool m_bUseDefaultPaperSetting = false;

        DoPrintDelegate DoPrint = null;

     

        public AFCSPrinter()
        {
            iSPriner = new PrintDocument();
            iSPriner.PrintPage += new PrintPageEventHandler
                (this.OnPrintPage);

        }

        public void Dispose()
        {
            if (iSPriner != null) iSPriner.Dispose();
            iSPriner = null;

        }

        /*设置打印机名*/
        public string PrinterName
        {
            get { return iSPriner.PrinterSettings.PrinterName; }
            set { iSPriner.PrinterSettings.PrinterName = value; }
        }

        /*设置打印文档名*/
        public string DocumentName
        {
            get { return iSPriner.DocumentName; }
            set { iSPriner.DocumentName = value; }
        }

         /*设置是否使用缺省纸张*/
        public bool UseDefaultPaper
        {
            get { return m_bUseDefaultPaperSetting; }
            set
            {
                m_bUseDefaultPaperSetting = value;
                if (!m_bUseDefaultPaperSetting)
                {
                    //如果不适用缺省纸张则创建一个自定义纸张,注意,必须使用这个版本的构造函数才是自定义的纸张
                    PaperSize ps=new PaperSize("Custom Size 1",827,1169);
                    //将缺省的纸张设置为新建的自定义纸张
                    iSPriner.DefaultPageSettings.PaperSize = ps;
                }
            }
        }

        /*纸张宽度 单位定义为毫米mm*/
        public float PaperWidth
        {
            get { return iSPriner.DefaultPageSettings.PaperSize.Width / 100f * 25.4f; }
            set
            {
               //注意,只有自定义纸张才能修改该属性,否则将导致异常
                if(iSPriner.DefaultPageSettings.PaperSize.Kind==PaperKind.Custom)
                    iSPriner.DefaultPageSettings.PaperSize.Width = (int)(value / 25.4 * 100);
            }
        }

        /*纸张高度 单位定义为毫米mm*/
        public float PaperHeight
        {
            get { return (int)iSPriner.PrinterSettings.DefaultPageSettings.PaperSize.Height / 100f * 25.4f; }
            set
            {
                 //注意,只有自定义纸张才能修改该属性,否则将导致异常
                if (iSPriner.DefaultPageSettings.PaperSize.Kind == PaperKind.Custom)
                    iSPriner.DefaultPageSettings.PaperSize.Height = (int)(value / 25.4 * 100);
            }
        }

       
       /*页面打印*/
        private void OnPrintPage(object sender, PrintPageEventArgs ev)
        {

            //调用委托绘制打印内容
            if (DoPrint != null)
            {
                bool bHadMore = false;
                DoPrint(ev.Graphics, ref bHadMore);
                ev.HasMorePages = bHadMore;
           
            }
           
        }

   
        /* 开始打印*/
        public void Print(DoPrintDelegate doPrint)
        {
   
            DoPrint = doPrint;    
            this.iSPriner.Print();
        }
    }
}

System.Data.SQLite Download Page (含各 framework 版本)

官網:System.Data.SQLite Download Page

利用設定ODBC 連線到不同的資料庫

參考引用:利用設定ODBC 連線到不同的資料庫
--
 Microsoft Access
1.Driver={Microsoft Access Driver (*.mdb)};Dbq=資料庫;[Uid=使用者名稱;Pwd=密碼;]
2.Provider=Microsoft.Jet.OLEDB.4.0;Data Source=資料庫;[User Id=使用者名稱;Password=密碼;]

Oracle
1. Driver={Microsoft ODBC for Oracle};Server=資料庫;[Uid=使用者名稱;Pwd=密碼;]
2. Provider=OraOLEDB.Oracle;Data Source=資料庫;[User Id=使用者名稱;Password=密碼;]

dBase
Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=資料庫;

Microsoft Text Driver
1. Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=資料庫;Extensions=asc,csv,tab,txt;
 Persist Security Info=False;
2. Provider=Microsoft.Jet.OLEDB.4.0;Data Source=資料庫;
 Extended Properties='text;FMT=Delimited'

Microsoft SQL Server
1. Driver={SQL Server};Server=伺服器;Database=資料庫;
 [Uid=使用者名稱(預設帳戶為sa);Pwd=密碼;]
2. Provider=SQLOLEDB;Data Source=伺服器;Initial Catalog=資料庫;
 [User Id=使用者名稱(預設帳戶為sa);Password=密碼;]

MySQL
driver={mysql};database=資料庫;option=16386;[uid=使用者名稱;pwd=密碼;]

Visual Foxpro
Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;
 SourceDB=資料庫;Exclusive=No;

vb6 oracle odbc connection string

參考引用來源:Oracle connection strings
--
vb6  OLE DB
--

Provider=OraOLEDB.Oracle;dbq=localhost:1521/XE;Database=myDataBase;
User Id=myUsername;Password=myPassword;

oracle odbc (Oracle Developer Tool for Visual Studio)

官網:32-bit Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studio 
--

2014年4月25日 星期五

Resize image (picturebox) for printing

引用來源
--
 Dim ImgX As Integer
Dim ImgY As Integer
Dim PSizeX As Integer
Dim PSizeY As Integer
Dim ScaleX As Double
Dim ScaleY As Double
Dim RecX As Integer
Dim RecY As Integer
Dim ScaleM As Double


ImgX = Me.PictureBox1.Image.Height
ImgY = Me.PictureBox1.Image.Width
If Me.PrintDocument1.DefaultPageSettings.Landscape = False Then
           PSizeX = Me.PrintDocument1.DefaultPageSettings.PaperSize.Height
           PSizeY = Me.PrintDocument1.DefaultPageSettings.PaperSize.Width
Else
           PSizeX = Me.PrintDocument1.DefaultPageSettings.PaperSize.Width
           PSizeY = Me.PrintDocument1.DefaultPageSettings.PaperSize.Height
End If
 ScaleX = PSizeX / ImgX
 ScaleY = PSizeY / ImgY
If ScaleX < ScaleY Then
  ScaleM = ScaleX
Else
  ScaleM = ScaleY
End If
 RecY = ImgY * ScaleM
 RecX = ImgX * ScaleM
 e.Graphics.DrawImage(PictureBox1.Image, 0, 0, RecY, RecX)



If PrintDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
           PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
           PrintDocument1.Print()
End If

vbnet 直接列印內容 (運用在簡易列印,如出單機)

MSDN:PrintDialog 類別
MSDN:PrintDocument 類別
Basic Text and Image Printing
--
範例 : MSDN:VB.Net Printing Example


底下為:印圖+文字範例,參考引用來源
--

Please check this code sample.

Clicking the Button1 will print a .bmp file and a .txt file on the same page.

Code Block
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim PrintPreviewDialog1 As PrintPreviewDialog = New PrintPreviewDialog
        Dim PrintDocument1 As Printing.PrintDocument = New Printing.PrintDocument
        PrintPreviewDialog1.Document = PrintDocument1
        PrintPreviewDialog1.ShowDialog()
        AddHandler PrintDocument1.PrintPage, AddressOf Me.PrintDocument1_PrintPage
        PrintDocument1.Print()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'RichTextBox1.LoadFile("D:\Text.txt", RichTextBoxStreamType.PlainText)
        'PictureBox1.Image = Image.FromFile("E:\VBproject\Gap.bmp")
    End Sub

    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
     
      Dim newImage As Image = Image.FromFile("E:\VBproject\Gap.bmp")
      e.Graphics.DrawImage(newImage, 100, 100)
      ' You also can reference an image to PictureBox1.Image.

        Dim txtReader As System.IO.StreamReader = New System.IO.StreamReader("D:\Text.txt")
        Dim textOfFile As String = txtReader.ReadToEnd
        txtReader.Close()
        e.Graphics.DrawString(textOfFile, New Font("Arial", 16), Brushes.Black, 100, 500)
        ' You also can reference some text to RichTextBox1.Text, etc.

    End Sub
End Class

---
運用列印條碼字型:參考引用來源

'printing barcode coupon...

'1. Print the company logo and % for coupon...
Dim logo As Image = Image.FromFile(@"C:\temp\AWCoupon.jpg")
e.Graphics.DrawImage(logo, New Point(0, 0))
logo.Dispose()

'2. Print barcode...
Dim barcode As New Neodynamic.WinControls.BarcodeProfessional.BarcodeProfessional()

'set barcode symbology... eg Code 128
barcode.Symbology = Neodynamic.WinControls.BarcodeProfessional.Symbology.Code128
'set barcode bars dimensions...
barcode.BarcodeUnit = Neodynamic.WinControls.BarcodeProfessional.BarcodeUnit.Inch
barcode.BarWidth = 0.015
barcode.BarHeight = 0.75
'set value to encode... this time a random value...
barcode.Code = Guid.NewGuid().ToString().ToUpper().Substring(0, 16)
'justify text...
barcode.CodeAlignment = Neodynamic.WinControls.BarcodeProfessional.Alignment.BelowJustify
'set font for barcode human readable text...
Dim fnt As New Font("Courier New", 10F)
barcode.Font = fnt
fnt.Dispose()
'print barcode below logo...
'IMPORTANT: barcode location unit depends on BarcodeUnit setting which in this case is INCH
barcode.DrawOnCanvas(e.Graphics, New PointF(0.1F, 1.5F))

'3. Print some texts...
Dim fnt1 As New Font("Arial", 12F, FontStyle.Bold)
Dim fnt2 As New Font("Arial", 8F, FontStyle.Regular)
 
e.Graphics.DrawString("RESELLER INTRUCTIONS", fnt1, Brushes.Black, New PointF(10F, 270F))
e.Graphics.DrawString("Use Item -% Off for the 15%. Scan coupon barcode or enter coupon code. Collect coupon with purchase as coupon may only be redeemed once per customer.", fnt2, Brushes.Black, New RectangleF(New PointF(10F, 290F), New SizeF(570F, 50F)))

e.Graphics.DrawString("COUPON OFFER DETAILS", fnt1, Brushes.Black, New PointF(10F, 350F))
e.Graphics.DrawString("This coupon can be redeemed once at any Adventure Works Cycles retail store." + Environment.NewLine + "This coupon is valid from May 21, 2009 to Jun 21, 2009.", fnt2, Brushes.Black, New RectangleF(New PointF(10F, 370F), New SizeF(570F, 50F)))

fnt1.Dispose()
fnt2.Dispose()

2014年4月23日 星期三

郭台銘對業務員說的話~必看!看看成功的人的想法!

引用來源
---
 一、如果

(1)妳只是接電話,告訴客戶不知道、沒辦法。

(2)妳只是開訂單,不連絡、不追蹤,有問題不回報、不處理。

(3)妳只是打報表,不確定數字正確性。

(4)妳只是接電話,從未希望客戶有滿意的感覺、從未希望客戶多訂一些貨。

(5)妳只是認為自己是助理,從未想過自己一言一行代表業務、主管、老闆、公司。

那麼,妳不夠格做一個稱職的助理,妳的工作,任何人都可以取代。


二、如果

(1)你從未將部門業績目標時時刻刻放在心中。

(2)你從未想過個人目標攸關部門目標達成。

(3)送樣後,從未想過結果如何,為什麼沒消息。

(4)報價後,從未追蹤為什麼沒有訂單,差多少可以成交。

(5)訂單多了,從未去想怎麼回事,隨波逐流、隨客戶起舞。

(6)訂單少了,不去追查什麼原因,毫無感覺、毫無動作。

(7)你從未想過在客戶面前更專業、更守信。

(8)工作不規劃、時間不管理、成本不控制、客戶不教育。

(9)你認為開發新客戶、新市場是麻煩的、痛苦的。

那麼,你不夠格做一個稱職的業務人員,你在是我們大家的負擔。


三、如果

(1)你不把客戶需求當作是非常的重要。

(2)你不把客戶抱怨當作優先解決的事項,主動追查檢討。

(3)你時常不準時送貨,當作客戶永遠都會等你。

(4)業務反應客戶的問題,你嫌他煩。

(5)客戶反應品質的問題,你嫌他挑剔,視他為爛客戶。

(6)你經常把〝很麻煩〞、〝有困難〞、〝不想做〞、〝不可能〞掛在嘴邊。

(7)你每天上班當作例行工作,不主動尋找問題、改善品質。

那麼,你不夠格做一個稱職的生產部主管,與你共事,我很疲勞。

每日我們在外努力,沒有良好的品質,沒有良好的服務做後盾,一切效果會打折扣,對客戶的承諾都會跳票,我們便成口才一流、品質二流、服務三流的公司。


四、如果

(1)有罵沒有稱讚、有懲罰沒有獎勵。

(2)對企業有利的,不立刻行動。

(3)經常把〝再看看〞、〝再研究〞掛在嘴邊。

那麼,我也只能偷偷的說,你不是一個稱職的老闆。我不能多說,畢竟你還是我的老闆。


結語

(1)我不是天才,因為天才只能留在天上,我們頂多是人才,但要有執行力才算。每個人每天都會有時間的壓力、品質的壓力、成本的壓力及業績的壓力,
沒有壓力不是〝工作 "而是〝 玩耍〞。 本人深有同感,欠缺壓力還會使我衰老。

(2)去年,我們的表現平平。今年,我們目標都已確定,時間過了幾個月,雖然暫時達成率不佳,但我仍深具信心,景氣、政治並不可怕,怕的是沒有危機意識,沒有檢討的能力,沒有執行的能力。


我有一個夢:

.我希望你們在組織中都有不可被取代的地位。

.我希望每個部門在公司有不可被取代的地位。

.我希望我們的產品、品質、服務在客戶心中有不可被取代的地位。

.我希望大家努力合作,辛苦的過程可以換來年終豐富的收割。

.我希望再享受一次,達成目標後〝爽〞的感覺!

2014年4月22日 星期二

2014年4月14日 星期一

asp 防止連點


<script>
var flag=false;
function ckSubmit()
{

if (flag)
{
alert("Error");
return false;
}
flag=true;
return true;
}
</script>


onsubmit="return ckSubmit()"

2014年4月13日 星期日

幾行Asp代碼實現防止表單重複提交

參考引用來源
--
在很多情況下都需要防止相同的表單被多次提交,很多人的實現方法都比較複雜(代碼數量超過幾
十行!!)下面提供一種只需使用幾行代碼的方法,輕鬆地實現了防止用戶刷新多次提交表單和使用後
退鈕重複多次提交表單。
    表單文件formtest.asp
    <%
    Randomize  '初始代隨機數種子
    num1=rnd() '產生隨機數num1
    num1=int(26*num1)+65  '修改num1的範圍以使其是A-Z範圍的Ascii碼,以防表單名出錯
    session("antry")="test"&chr(num1)  '產生隨機字符串
    %>
    <form name="test" action="testact.asp" method="post">
    你的名字:<input type='text' name='' size=30>   '注意本行中使用了隨機表單項名
    <input type='submit' value='提交'>
    </form>

    表單處理程序testact.asp
    <%
    teststr=request.form(session("antry"))
    if teststr="" then
      response.write "沒有填寫姓名或重複提交"
      '由於用戶沒有填寫名字,或表單被重複提交(標誌為session("antry")為空)引起
    else
      response.write teststr
      session("antry")=""    '提交成功,清空session("antry"),以防重複提交!!
    end if
    %>

龍之魚水族寵物館

龍之魚水族寵物館 -

2014年4月1日 星期二

四行倉庫 股東會紀念品總發放處

四行倉庫 股東會紀念品總發放處 
--

撿股讚 - 台股分析

撿股讚 - 台股分析
--

MSSQL 群組字串連結 (自訂函數)

參考引用來源:[SQL] 群組字串連結
--
IF OBJECT_ID(N'dbo.getCommaString', N'FN') IS NOT NULL
    DROP FUNCTION dbo.getCommaString

-- 建立 FUNCTION
CREATE FUNCTION getCommaString(@date datetime)
RETURNS varchar(500)  --500若不夠,請加大
BEGIN
    DECLARE @string varchar(500)  --500若不夠,請加大
    SET @string = ''
 
    SELECT @string = @string + EmpName + ','
    FROM Leave
    WHERE Date = @date
    ORDER BY EmpName
 
    SET @string = LEFT(@string,LEN(@string)-1) -- 把最後面的逗號後刪除
    RETURN @string
END

-- 使用自定函數來進行字串連結
SELECT
     CONVERT(char(10),Date,120) AS [日期],
     DATENAME(dw,Date) AS [星期],
     dbo.getCommaString(Date) AS [請假人員]
FROM Leave
GROUP BY Date