2011年5月31日 星期二

vs 2008 編譯速度提升

參考處
--
参照上文的说明,修改文件

C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.CompactFramework.Common.targets



<Target
Name="PlatformVerificationTask" Condition="'$(SkipPlatformVerification)' == 'true'" >
<PlatformVerificationTask
PlatformFamilyName="$(PlatformFamilyName)"
PlatformID="$(PlatformID)"
SourceAssembly="@(IntermediateAssembly)"
ReferencePath="@(ReferencePath)"
TreatWarningsAsErrors="$(TreatWarningsAsErrors)"
PlatformVersion="$(TargetFrameworkVersion)"/>
</Target>

增加:Condition="'$(SkipPlatformVerification)' == 'true'"
---
以上經實測後,約能提升縮短編譯時間約:2分鐘 (我的方案是服飾ERP+POS的架構)

array 運用判斷是否有重覆設定值

在遇到一些群組flag型且又多時,可利用陣列方式來處理過濾是否有重覆設定並提示!
底下是簡單例子,就看怎運用!
---
'0-9=10
Dim a() As Integer = {0, 1, 0, 3, 4, 0, 9, 7, 8, 6}
Dim j As Integer = 0
For Each q As Integer In a.Distinct.ToArray
j += 1
Next

2011年5月30日 星期一

如何過濾重複的陣列元素

參考來源
--
' 方法 1
Private Sub Button1_Click(ByVal s As Object, ByVal e As EventArgs) Handles Button1.Click

Dim ary() As Integer = {1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3}

' 使用預設的相等比較子來比較值,以便從序列傳回獨特的項目。
For Each i As Integer In ary.Distinct.ToArray()
MessageBox.Show(i)
Next

End Sub

' 方法 2
Private Sub Button2_Click(ByVal s As Object, ByVal e As EventArgs) Handles Button2.Click

Dim ary() As Integer = {1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3}

'IEnumerable 泛型介面
Dim ienum As IEnumerable(Of Integer) = ary

' Enumerable類別.Distinct 方法移除重複項目的序列
For Each i As Integer In ienum.Distinct
MessageBox.Show(i)
Next

End Sub

2011年5月28日 星期六

2011年5月27日 星期五

將資料填進EXCEl與WORD中

--word--
Imports Microsoft.Office.Interop

Dim wod_app As New Word.Application    '這邊要注意建立app時要用new
Dim wod_doc As Word.Document
Dim wod_tab As Word.Table

  wod_doc = wod_app.Documents.Open("C:\NEWS管理.doc", , True)
  wod_tab = wod_doc.Tables.Item(1)

  contSqlconn(1)    '個人的連接資料庫函式
  cmd.CommandText = "select * from hn_news where (流水號='" + 流水號.Text + "')"
  dr = cmd.ExecuteReader
  dr.Read()

    wod_tab.Cell(1, 1).Range.Text = dr("狀態旗標").ToString
    wod_tab.Cell(1, 2).Range.Text = dr("流水號").ToString
    wod_tab.Cell(1, 4).Range.Text = dr("標題").ToString
    wod_tab.Cell(2, 2).Range.Text = dr("內容").ToString
    wod_tab.Cell(4, 2).Range.Text = dr("回覆").ToString

  dr.Close()
  contSqlconn(-1)

  wod_app.Visible = True '預覽列印
  'wod_app.PrintOut(Copies:=1) '直接列印
  'wod_app.Quit(SaveChanges:=False) '關閉開啟的WORD

  wod_tab = Nothing

  wod_doc.Close()
  wod_doc = Nothing

  wod_app.Quit()
  wod_app = Nothing
  
  GC.Collect()

--excel--
Imports Microsoft.Office.Interop

  Dim exl_ap As New Excel.Application
  Dim exl_wkb As Excel.Workbook
  Dim exl_wks As Excel.Worksheet
  Dim i As Integer = 1

  exl_wkb = exl_app.Workbooks.Open("C:\驗購表.xls", , True) '這個TRUE是Readonly
  exl_wks = exl_wkb.Worksheets("sheet1") '或者 exl_wks = exl_wkb.Worksheets(1)

  contSqlconn(1)
  cmd.CommandText = "sql語法省略" + _
  dr = cmd.ExecuteReader
    With exl_wks
      .Name = "藥品驗購表"
      .Range("A" & i).Value = "藥品中文名"
      .Range("B" & i).Value = "藥品索引"
      .Range("C" & i).Value = "藥品簡稱"
      .Range("D" & i).Value = "驗收日期"
      .Range("E" & i).Value = "藥廠名稱"
      .Range("F" & i).Value = "藥廠代號"
      .Range("A1:F1").Interior.ColorIndex = 6
      .Cells().ColumnWidth = 7

    End With
  While dr.Read
    i += 1
    With exl_wks
      .Range("A" & i).Value = dr(0).ToString
      .Range("B" & i).Value = dr(1).ToString
      .Range("C" & i).Value = dr(2).ToString
      .Range("D" & i).Value = dr(3).ToString
      .Range("E" & i).Value = dr(4).ToString
      .Range("F" & i).Value = dr(5).ToString
    End With
  End While

  exl_app.SaveWorkspace()
  exl_app.Visible = True

  exl_wks = Nothing

  exl_wkb.Close()
  exl_wkb = Nothing

  exl_app.Quit()
  exl_app = Nothing

  contSqlconn(-1)
  GC.Collect()

send raw data to a printer

請參考微軟
--
這是透過已有安裝在OS上的印表機來列印

2011年5月26日 星期四

發票機 wp-103s for vb6 列印

最簡單就是用:
(1)
Private Sub Command1_Click()
Open "lpt1:" For Output As #1
Print #1, "test"
Close #1
End Sub

(2)
Private Sub Command1_Click()
Open "com3:" For Output As #1
Print #1, "test"
Close #1
End Sub

博客园 - 程序员的网上家园

程序员的网上家园
--
Blog 內有很多高手,真是得好好挖寶了

2011年5月25日 星期三

sql 資料庫無'+'號,無法打開

--
真是千奇百怪問題特多,微軟加油點;穩一些些!
找不出是什原因,是病毒所造成或是元件被防毒軟體綁住....!?

2011年5月24日 星期二

Maxthon 2 vs Maxthon 3

原 Maxthon 2 是採用IE當核心,結果這次整個 Maxthon 3 卻不再延用 IE 核心了
讓我不得改換IE9了
因在開發 asp or asp.net 我習慣採用ie當標準 , 試改用 Maxthon 3 後 ;
結果看起來核心像是 Google Chrome 和 Firefox ..怎會這樣改革呢?
是看到facebook 這塊產值?

ie9 真是快

微軟這次的ie9,真是快;不得不佩服微軟這樣的改進核心
相關下載請至微軟IE9下載

命令停止啟動SQL

net start mssql$sqlexpress

net stop mssql$sqlexpress

2011年5月23日 星期一

MSDN Samples Gallery

MSDN Samples Gallery
--
要跟著微軟腳步,就得多多學範例! 在這兒集合了很多技術唷

微軟 101 LINQ 範例

101 Visual Basic LINQ 範例
--
真是豐富,值得學習一下

NTVDM 遭遇硬體錯誤

真是神奇,竟會出現此錯誤!!
造成:NTVDM 遭遇硬體錯誤的視窗,主要是被植入C:\WINDOWS\runhostdl.exe
還好這是16bit的,所以無法執行
從 HKCU\..\Run: [rundll] C:\WINDOWS\runhostdl.exe (刪除)
再去刪除 C:\WINDOWS\runhostdl.exe
重新開機,一切OK

2011年5月19日 星期四

用命令列新增排定工作

參考來源
---
(1)
schtasks /Create /RU "NT AUTHORITY\SYSTEM" /SC WEEKLY /D MON,THU /TN IP_Table /TR C:\IP.exe /ST 12:10:00

/RU:指定要執行工作的使用者帳戶。
/SC:指定排程執行頻率。(可以選 MINUTE,HOURLY,DAILY,WEEKLY,MONTHLY,ONCE,ONSTART,ONLOGON,ONIDLE)
/D:指定工作執行的日期。(可以選 MON,TUE,WED,THU,FRI,SAT,SUN。還有MONTHLY 排程 1 - 31)
/TN:排程工作的唯一性名稱。
/TR:排程工作執行程式的路徑及檔案名稱。
/ST:指定工作的執行時間。(時間格式是 HH:MM:SS [24小時制])

(2)
schtasks /Create /RU "NT AUTHORITY\SYSTEM" /SC HOURLY /TN IP_Table /TR C:\IP.exe /ED 2020/12/30

/ED:指定工作最後一次執行的日期。格式是"yyyy/mm/dd"。

2011年5月18日 星期三

SQL 2008 界面式開啟 allow updates

因MS-SQL 2008 資料庫'一直猛壞掉',也找不到是什原因造成..
常出現的是:資料庫(有疑問)
在網路上想找修復方式,結果都是卡在:(權限問題)
sp_configure 'allow updates', 1
---
利用了一些時間找了一下 SQL Server Management Studio 機關
終於找到了,用界面式來開即可:

常用SQL Server数据修复命令DBCC

==================================================

MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令。
  1. DBCC CHECKDB
  重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。


use master
declare @databasename varchar(255)
set @databasename='需要修复的数据库实体的名称'
exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
dbcc checkdb(@databasename,REPAIR_REBUILD)
exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态

然后执行 DBCC CHECKDB('需要修复的数据库实体的名称') 检查数据库是否仍旧存在错误。注意:修复后可能会造成部分数据的丢失。

2. DBCC CHECKTABLE
如果DBCC CHECKDB 检查仍旧存在错误,可以使用DBCC CHECKTABLE来修复。
use 需要修复的数据库实体的名称
declare @dbname varchar(255)
set @dbname='需要修复的数据库实体的名称'
exec sp_dboption @dbname,'single user','true'
dbcc checktable('需要修复的数据表的名称',REPAIR_ALLOW_DATA_LOSS)
dbcc checktable('需要修复的数据表的名称',REPAIR_REBUILD)
------把’ 需要修复的数据表的名称’更改为执行DBCC CHECKDB时报错的数据表的名称
exec sp_dboption @dbname,'single user','false'

3. 其他的一些常用的修复命令
DBCC DBREINDEX 重建指定数据库中表的一个或多个索引
用法:DBCC DBREINDEX (表名,’’) 修复此表所有的索引。

===================================



SQL SERVER数据库的检测及修复方法
随着K/3产品的推广,要求客户服务人员对SQL SERVER数据库的了解也进一步提高。在K/3的使用过程中,数据库文件被频繁地使用,由于某些原因,数据库有可能被损坏,本文将针对这种情况的数据库检测及修复方法做一简单讲解。希望各位在实际工作过程中有新的发现时,及时给我们提供信息,以便做进一步的更新。
1.1 SQL SERVER数据库的检测
SQL SERVER提供了数据库检测的命令,可用DBCC CHECKDB对数据库中各个对象的分配及结构的正确性进行检测,并可通过一参数控制,将所有的错误信息显示出来。其语法如下:
DBCC CHECKDB
('database_name' [,NOINDEX | { REPAIR_ALLOW_DATA_LOSS
| REPAIR_FAST
| REPAIR_REBUILD
}]
) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}]
参数说明:
'database_name'代表被检测的数据库实体名;
NOINDEX指非系统表的非聚族索引不检测;
REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST| REPAIR_REBUILD 指直接修复发现的错误,其中REPAIR_ALLOW_DATA_LOSS代表,若此错误不能修复时,系统将直接删除相关数据。带此三个参数的任一个时,数据库必须处于单用户模式,可在Enterprise Manager中的数据库属性中设置;
ALL_ERRORMSGS代表将检测到的错误信息全部显示出来,否则,对于每张表最多只显示200条错误信息;
NO_INFOMSGS代表隐藏所有的信息及占用空间的报告。
经过检测,对于错误的对象,将以OBJECT ID的形式报告具体出错的信息,可根据OBJECT ID到系统表sysobjects中查找到相关的表,即NAME。

1.2 SQL SERVER问题数据库的修复
经过数据库检测后,可针对出现的问题采取相应的措施进行处理。如通过检测后,发现对象的物理存放存在问题,可用DBCC CHECKALLOC来进行修复:
DBCC CHECKALLOC ('database_name' | REPAIR_REBUILD }] ) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}]
若是非系统对象的索引出错,则可用DBCC DBREINDEX进行修复:
DBCC DBREINDEX ( [ 'database.owner.table_name' [, index_name [, fillfactor ] ] ] ) [WITH NO_INFOMSGS]
以上两种情况,也可直接使用DBCC CHECKDB(‘db_name’,repair_rebuild)来修复。
另外一种情况是在进行检测时,提示无法建立数据连接,此时表明,数据库已损坏。对于这种情况,我们可采取如下措施来尝试修复。
首先,在SQL Enterprise中新建一数据库(如数据库名为test),建好数据库后,停止SQL Server Service Manager,并将客户数据库的MDF文件更名为test _data.mdf(即新建数据库的主文件名),然后用更名后的文件覆盖新建数据库同名文件,接着,启动SQL Server Service Manager。对Master数据库将系统表设置为可更改状态
Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go
将数据库设为紧急状态:
update sysdatabases set status = 32768 where database '
停止并重新启动SQL Server Service Manager,并重建Log文件:
DBCC TRACEON (3604)
DBCC REBUILD_LOG(' test ','test _log_ldf')
将数据库设置为单用户模式,然后进行检测:
sp_dboption ' test ', 'single user', 'true'
DBCC CHECKDB(' test ')
Go
此数据库执行CHECKDB的过程中发现一些表的索引被破坏,于是针对具体的表进行重建索引的操作:
DBCC DBREINDEX(表名)
如执行以上操作仍然不能解决,若索引破坏的表是临时表或不是关键表,则可从新建账套中引入,若是主表,则可能通过近期的备份来(部份)恢复。若没有一个备份,则无法修复。

1.3 SQL Server数据库为什么易损坏呢?
以下是微软提供的一些可能引起数据库损坏的原因及一些预防措施:
操作问题,包括冷起动机器、热拔硬盘、删除一些数据库文件;
硬件问题,包括磁盘控制器的问题;
操作系统问题,包括与系统相关的一些致命错误。

1.4 预防措施:
1、定期/不定期执行CHKDSK(不带参数),以检测硬盘物理结构并修复一些CHKDSK报告的问题;
2、常备份数据。

1.5 应用数据库修复举例
declare @databasename varchar(255)
set @databasename='AIS20021224170730'------一定要手工输入
---------执行一般性修复还存在问题时,进行允许数据丢失的修复
---------许数据丢失的修复要求在单用户下进行,此时请退出中间层,客户端,sql的其他模块
---所有功能退出,在查询分析器master里设置数据库为单用户

exec sp_dboption @databasename, N'single', N'true'

-----在查询分析器master里,进行修复数据库
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
dbcc checkdb(@databasename,REPAIR_REBUILD)
------还原数据库状态
exec sp_dboption @databasename, N'single', N'false'


第2章数据库日志损坏的修复
请遵照如下步骤来试图重建数据库事务日志.

注意: 由于事务日志丢失, 数据库可能有没有提交的数据.

注:都要替换成真实的数据库名字

2.1 步骤1:

创建一个新的数据库,命名为原来数据库的名字.

2.2步骤2:

停止SQL Server

2.3步骤3:

把老数据库的MDF文件替换新数据库的相应的MDF文件, 并把LDF文件删除

2.4步骤4:

重新启动SQL Server 服务,然后运行如下命令:

Use Master

Go

sp_configure 'allow updates', 1

reconfigure with override

Go

begin tran

update sysdatabases set status = 32768 where db_name'

-- Verify one row is updated before committing

commit tran

2.5步骤5:

停止SQL然后重新启动SQL Server 服务,然后运行如下命令:

DBCC TRACEON (3604)

DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3.LDF')

Go

2.6步骤6:

停止SQL然后重新启动SQL Server 服务,然后运行:

use master

update sysdatabases set status = 8 where
Go

sp_configure 'allow updates', 0

reconfigure with override

Go

2.7步骤7:
运行dbcc checkdb(db_name)检查数据库的完整性.

第3章 数据库质疑的一般处理
1、执行如下SQL(打开修改系统表的开关):
EXEC sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE
2、修改数据库Master中的表:sysdatabases
将 status字段数值更改为4
3、再执行如下SQL:
EXEC sp_configure 'allow updates', 0
RECONFIGURE WITH OVERRIDE。

2011年5月17日 星期二

租書軟體,新的建檔思維

最近在維護租書軟體時,遇到一個批次建檔問題!
在開發POS時,這種批次拋轉一定是交給盤點機來吸條碼;再拋轉關聯相關資訊出來即可達到.
但..
小說漫畫店,本身收益就沒這麼高;要請店家買支盤點機有點浪費,且一般頂多運用在開店大量建檔的行為
而怎讓軟體也能跟Excel那樣,貼來貼去後;即可成一份完整資料!
底下即為新的構思建檔模式,真是減輕了新開店要大量建檔的店家了!
--

取得安裝於電腦上的所有印表機名稱與預設印表機名稱

參考來源

--

Imports System.Drawing.Printing



Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim printDoc As New PrintDocument()

Dim sDefaultPrinter As String = printDoc.PrinterSettings.PrinterName '取得預設的印表機名稱



'取得安裝於電腦上的所有印表機名稱,加入 ListBox (Name : lbInstalledPrinters) 中

For Each strPrinter As String In PrinterSettings.InstalledPrinters

Me.lbInstalledPrinters.Items.Add(strPrinter)

Next



'ListBox (Name : lbInstalledPrinters) 選擇在預設印表機

Me.lbInstalledPrinters.SelectedIndex = Me.lbInstalledPrinters.FindString(sDefaultPrinter)



End Sub

End Class

透過程式關閉 MsgBox

參考來源

---

Public Class Form1

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer



Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click

Me.Timer1.Enabled = True

Me.Timer1.Interval = 1000

MsgBox("測試", MsgBoxStyle.OkOnly, "MsgBox")

Me.Timer1.Enabled = False

End Sub



Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Dim hWnd As Integer

hWnd = FindWindow(vbNullString, "MsgBox")

If hWnd Then

PostMessage(hWnd, &H10, 0&, 0&)

End If

End Sub

End Class

---

以上為原著!

這篇不錯,竟有這想法;值得記一下timer的控制運用!

將字串分割,並產生字串陣列

參考來源

--

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

' === 字串切割 ===

Dim MyString = "09/02/04 4:00p 21.9 21.9 21.8 69 15.9 3.6 NE 2.15 6.3 "

Dim charSeparators() As Char = {" "c}

Dim strResult() = MyString.Trim().Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)



' === 顯示 ===

For i As Integer = 0 To strResult.Length - 1

Me.TextBox1.Text += strResult(i) + Environment.NewLine

Next

End Sub

End Class

取得安裝於電腦上的所有印表機名稱與預設印表機名稱

參考來源

--

Imports System.Drawing.Printing



Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim printDoc As New PrintDocument()

Dim sDefaultPrinter As String = printDoc.PrinterSettings.PrinterName '取得預設的印表機名稱



'取得安裝於電腦上的所有印表機名稱,加入 ListBox (Name : lbInstalledPrinters) 中

For Each strPrinter As String In PrinterSettings.InstalledPrinters

Me.lbInstalledPrinters.Items.Add(strPrinter)

Next



'ListBox (Name : lbInstalledPrinters) 選擇在預設印表機

Me.lbInstalledPrinters.SelectedIndex = Me.lbInstalledPrinters.FindString(sDefaultPrinter)



End Sub

End Class

2011年5月16日 星期一

讀取星期

Dim day() As String = {"(日)", "(一)", "(二)", "(三)", "(四)", "(五)", "(六)"}
MessageBox.Show(day(Convert.ToInt16(Now.DayOfWeek)))

2011年5月15日 星期日

DriveInfo 類別運用USB裝置

參考來源
--
DriveInfo.DriverType 可以取得磁碟類型,包括 CDRom、Fixed、Network、NoRootDirectory、Ram、Removable 和 Unknown。
--
Imports System.IO
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Interval = 100
Timer1.Enabled = True
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ListBox1.Items.Clear()
Dim di As DriveInfo
For Each di In DriveInfo.GetDrives
If di.DriveType = DriveType.Removable Then
ListBox1.Items.Add("偵測到" & di.Name & "抽取式存放裝置")
End If
Next
End Sub
End Class

圖片檔案存於記憶體中,並且讀出到 PictureBox 中

參考來源
--
Imports System.IO
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' 實例化 OpenFileDialog
Dim op As New OpenFileDialog()
' 設定檔案的類型
op.Filter = "JPG|*.jpg|GIF|*.gif"
' 使用者選擇圖片,使用者選擇正確圖片路徑時
If op.ShowDialog() = Windows.Forms.DialogResult.OK Then
' 實例化 FileStream
Dim fs As New FileStream(op.FileName, FileMode.Open)
Dim Data(fs.Length) As Byte
' 把檔案讀取到位元組陣列
fs.Read(Data, 0, fs.Length)
fs.Close()
' 實例化一個記憶體資料流 MemoryStream,將位元組陣列放入
Dim ms = New MemoryStream(Data)
' 將記憶體資料流的資料顯示於 PictureBox 中
Me.PictureBox1.Image = Image.FromStream(ms)
ms.Dispose()
End If
End Sub
End Class

取得安裝於電腦上的所有印表機名稱與預設印表機名稱

參考來源
--
Imports System.Drawing.Printing

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim printDoc As New PrintDocument()
Dim sDefaultPrinter As String = printDoc.PrinterSettings.PrinterName '取得預設的印表機名稱

'取得安裝於電腦上的所有印表機名稱,加入 ListBox (Name : lbInstalledPrinters) 中
For Each strPrinter As String In PrinterSettings.InstalledPrinters
Me.lbInstalledPrinters.Items.Add(strPrinter)
Next

'ListBox (Name : lbInstalledPrinters) 選擇在預設印表機
Me.lbInstalledPrinters.SelectedIndex = Me.lbInstalledPrinters.FindString(sDefaultPrinter)

End Sub
End Class

透過程式關閉 MsgBox

參考來源
---
Public Class Form1
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer

Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
Me.Timer1.Enabled = True
Me.Timer1.Interval = 1000
MsgBox("測試", MsgBoxStyle.OkOnly, "MsgBox")
Me.Timer1.Enabled = False
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim hWnd As Integer
hWnd = FindWindow(vbNullString, "MsgBox")
If hWnd Then
PostMessage(hWnd, &H10, 0&, 0&)
End If
End Sub
End Class
---
以上為原著!
這篇不錯,竟有這想法;值得記一下timer的控制運用!

西元轉民國

參考來源
--方法一:
TextBox1.Text = Convert.ToInt16(DateTime.Now.AddYears(-1911).Year) & DateTime.Now.ToString("/MM/dd")
--方法二:
Dim dtNow = DateTime.Now
Dim twC = New System.Globalization.TaiwanCalendar()
TextBox1.Text = twC.GetYear(dtNow).ToString + dtNow.ToString("/MM/dd")

取得Google搜尋的結果

參考來源
--
請參考原站!!
--

連線狀態

參考來源
--
Public Class Form1

Private Sub Form1_Load() Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Interval = 100
Timer1.Enabled = True
End Sub

Private Sub Timer1_Tick() Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim builder As New System.Text.StringBuilder
Dim ipProps As System.Net.NetworkInformation.IPGlobalProperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties()
For Each connection As System.Net.NetworkInformation.TcpConnectionInformation In ipProps.GetActiveTcpConnections
builder.AppendFormat("{0} -> {1} - {2}{3}", connection.LocalEndPoint, connection.RemoteEndPoint, connection.State, Environment.NewLine)
Next
TextBox1.Text = builder.ToString
End Sub
End Class

顯示桌面

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim clsidShell As New Guid("13709620-C279-11CE-A49E-444553540000")
Dim shell As Object = Activator.CreateInstance( _
Type.GetTypeFromCLSID(clsidShell))
shell.ToggleDesktop()
End Sub

將字串分割,並產生字串陣列

參考來源
--
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' === 字串切割 ===
Dim MyString = "09/02/04 4:00p 21.9 21.9 21.8 69 15.9 3.6 NE 2.15 6.3 "
Dim charSeparators() As Char = {" "c}
Dim strResult() = MyString.Trim().Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)

' === 顯示 ===
For i As Integer = 0 To strResult.Length - 1
Me.TextBox1.Text += strResult(i) + Environment.NewLine
Next
End Sub
End Class

Windows Mobile 開發參考

.NET菜鳥自救會 - Develop-Phone

快速取得星期

Dim day() As String = {"(日)", "(一)", "(二)", "(三)", "(四)", "(五)", "(六)"}
MessageBox.Show(day(Convert.ToInt16(Now.DayOfWeek)))

2011年5月13日 星期五

blogger 修復後,都錯亂了

blogger 修復後,標籤都錯亂了;不會吧..
請幫幫忙...
--
2011/5/16,總算修好些了
少篇數的亂碼,自己手動調整[標籤];已全部正常化了
真是驚嚇一場呀

租書雲端化 vs 電子書

資訊一直變化,電子書已29~50%漸取代傳統式書籍的翻頁閱讀了.
現在政府更大力推廣電子書攜帶型,讓想進軍小說漫畫租書店的人;怯場約50%
世代在變e潮也不停在新更,當真取代了嗎?
不見得是取代,只是短期式的耳目一新;愛書族無法適應長時間的電子式閱讀
主要關鍵:習慣.眼睛適應度.閱讀姿態等,將否定電子式閱讀的心態
依店為觀點,怎把這近50%的電子族拉回到市場呢?
不知大家是否想過此問題呢!? 極盡努力各招術辦法,就是沒辦法踏青進入電子族群
要懂得心理戰術和孫子兵法,哈;真是神奇的過招.
既然店書籍收不到電子族的進店心,那何不提供園地(網路平台)讓進入電子族自動進門呢
此園地,目前看到有花xx蝶已建置;但卻不完善且設計語言成熟度不足和頻寬欠佳,真是功虧一潰.
池龍工作室今年度既已打出{租書雲端式服務}的目標,將會努力完成此目標!
此目標要炒起書迷回歸原有市場,讓租書市場更活躍
在未問市前,看不到東西;卻長篇大論,騷癢嗎! 哈,就努力加油了
{雲端}是個優化過的名稱,實質就是網路平台;只要透過瀏覽器就能執行任務.事件.動作等
所有各店會員,不需安裝任何程式工具;任何時間就能取得店最新資訊消息
舉凡:預約書.租書.郵遞.中古書交易.賣書.買書..等,均能實現
本工作室將把開發租書軟體這7-8年的經驗值,投入開發這網路平台
不怕各店家徵招會寫網站平台的高手過招,即使再高手;也有入行的困難點!
頂多只能做到初級簡易型的平台,深入..就得看調合度了
這是長期性的抗戰,那家店能如此跟進;除非是同行,但同行也得看網站開發的功力深淺度了
歡迎競爭對手出現挑戰這能幫助店家增加收益的網路平台服務

2011年5月9日 星期一

datagridview convert datatable

Public Function dvtodt(dv As DataGridView) As DataTable
Dim dt As New DataTable()
Dim dc As DataColumn
For i As Integer = 0 To dv.Columns.Count - 1
dc = New DataColumn()
dc.ColumnName = dv.Columns(i).HeaderText.ToString()
dt.Columns.Add(dc)
Next
For j As Integer = 0 To dv.Rows.Count - 2
Dim dr As DataRow = dt.NewRow()
For x As Integer = 0 To dv.Columns.Count - 1
dr(x) = dv.Rows(j).Cells(x).Value
Next
dt.Rows.Add(dr)
Next
Return dt
End Function

2011年5月8日 星期日

2011年5月6日 星期五

update 年度

參考來源
---
update TABLENAME
set [DATEFIELD] = CDate( Format$([DATEFIELD], "MM/DD/") & "2003" )
where Year([DATEFIELD]) = 1903

microsoft sql server error 5120 解決方法

參考
----------
前些日子在實驗室的機房上進行SQL的一些實驗,後來把數據拷回來了的,表文件和日誌文件都在,實驗室用的是SQL2000,拷回來了在自己的電腦上用的是SQL2005EXPRESS,附加數據庫的時候就會出現問題,報錯的圖如下:

應該不是版本上的什麼問題,後來也證實了確實不是。

報錯之後就到Goolge搜了搜,發現在這個問題遇到的人還是蠻多的。。。。。。按照上面說的方法千奇百怪的弄了弄,有的說是文件權限的問題,於是我就把權限改了下,發現不見效果,也有的說是數據庫登錄的賬戶問題,於是在windows和sa賬戶之間切換了幾次,沒看見有什麼反應,問題依然。。。。。。就這樣,實踐了云云的方法,問題也沒得到個解決。

突然自己靈光一顯,想到了個方法,具體的如下:我用現在的SQL2005EXPRESS創建了一個數據庫,然後把軟件關閉,數據庫服務也停止了,把拷回來的文件在其它的文件夾改了個名,改成和我創建的那個數據庫一樣的名稱,日誌文件也一樣。然後拷貝到創建數據庫的那個文件夾,用這個改了名的文件替換掉我創建的那個。開啟數據庫服務,打開軟件,發現問題解決。。。。。所有的數據都可以使用了。

如果在附加數據庫的時候遇到相同問題的朋友,試試這個方法,或許問題就解決了,可以說是一個很簡單的方法.