8月号的《日经SYSTEMS》(日本)上面刊登了一篇文章,内容是日本的一线技术人员推荐访问的101个网页的地址。
被推荐的网页大多为日文,不过,一个叫榊原彰的架构师推荐的10个网页全部为英文。文中介绍说:"榊原彰是日本IBM中成为最高级别的工程师的时候年纪最轻的一个。到他这个级别的IBM工程师全世界大约有610个左右。是日本架构师的杰出代表" 下面是这位架构师推荐的十个网站:

TheServerSide.COM
CBDI
BP Trends
Software Engineering Institute
StickyMinds.com
RedHerring
The Wall Street Journal
Cutter Consortium
DSM Forum
Eclipse.org

下面其他人推荐的几个英文网站:

Handbook of Software Architecture
TechCrunch
freshmeat.net
CPAN
Blackhat.com
Enterprise Integration Pattern
posted @ 2006-08-03 12:43 Ronin 阅读(514) 评论(0) 编辑
通常,我们在编程的时候会参考自己过去的程序,或者在网络上面查找现成的例子。
如果在Google,Baidu之类的网站上面搜索,结果里面会有很多不需要的信息,查找真正需要的东西的时候会比较困难。
下面是几个专门进行代码搜索的网站。只要你说如代码片断,就可以查到你想要的相关内容,有几个还可以选择你要查找的语言。

· Koders
· Krugle
· Codase
· CPAN code search by gonzui
· codefetch{
posted @ 2006-07-21 09:50 Ronin 阅读(647) 评论(5) 编辑
接上篇

四,根据条件有选择的UPDATE。

例,有如下更新条件
  1. 工资5000以上的职员,工资减少10%
  2. 工资在2000到4600之间的职员,工资增加15%
很容易考虑的是选择执行两次UPDATE语句,如下所示
--条件1
UPDATE Personnel
SET salary = salary * 0.9
WHERE salary >= 5000;
--条件2
UPDATE Personnel
SET salary = salary * 1.15
WHERE salary >= 2000 AND salary < 4600;

但是事情没有想象得那么简单,假设有个人工资5000块。首先,按照条件1,工资减少10%,变成工资4500。接下来运行第二个SQL时候,因为这个人的工资是4500在2000到4600的范围之内, 需增加15%,最后这个人的工资结果是5175,不但没有减少,反而增加了。如果要是反过来执行,那么工资4600的人相反会变成减少工资。暂且不管这个规章是多么荒诞,如果想要一个SQL 语句实现这个功能的话,我们需要用到Case函数。代码如下:
UPDATE Personnel
SET salary = CASE WHEN salary >= 5000
             THEN salary * 0.9
WHEN salary >= 2000 AND salary < 4600
THEN salary * 1.15
ELSE salary END;

这里要注意一点,最后一行的ELSE salary是必需的,要是没有这行,不符合这两个条件的人的工资将会被写成NUll,那可就大事不妙了。在Case函数中Else部分的默认值是NULL,这点是需要注意的地方。
这种方法还可以在很多地方使用,比如说变更主键这种累活。
一般情况下,要想把两条数据的Primary key,a和b交换,需要经过临时存储,拷贝,读回数据的三个过程,要是使用Case函数的话,一切都变得简单多了。
p_key col_1 col_2
a 1 张三
b 2 李四
c 3 王五


假设有如上数据,需要把主键ab相互交换。用Case函数来实现的话,代码如下
UPDATE SomeTable
SET p_key = CASE WHEN p_key = 'a'
THEN 'b'
WHEN p_key = 'b'
THEN 'a'
ELSE p_key END
WHERE p_key IN ('a', 'b');

同样的也可以交换两个Unique key。需要注意的是,如果有需要交换主键的情况发生,多半是当初对这个表的设计进行得不够到位,建议检查表的设计是否妥当。

五,两个表数据是否一致的检查。

Case函数不同于DECODE函数。在Case函数中,可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等等。比如说使用IN,EXISTS,可以进行子查询,从而 实现更多的功能。
下面具个例子来说明,有两个表,tbl_A,tbl_B,两个表中都有keyCol列。现在我们对两个表进行比较,tbl_A中的keyCol列的数据如果在tbl_B的keyCol列的数据中可以找到, 返回结果'Matched',如果没有找到,返回结果'Unmatched'。
要实现下面这个功能,可以使用下面两条语句
--使用IN的时候
SELECT keyCol,
CASE WHEN keyCol IN ( SELECT keyCol FROM tbl_B )
THEN 'Matched'
ELSE 'Unmatched' END Label
FROM tbl_A;
--使用EXISTS的时候
SELECT keyCol,
CASE WHEN EXISTS ( SELECT * FROM tbl_B
WHERE tbl_A.keyCol = tbl_B.keyCol )
THEN 'Matched'
ELSE 'Unmatched' END Label
FROM tbl_A;

使用IN和EXISTS的结果是相同的。也可以使用NOT IN和NOT EXISTS,但是这个时候要注意NULL的情况。

六,在Case函数中使用合计函数

假设有下面一个表
学号(std_id) 课程ID(class_id) 课程名(class_name) 主修flag(main_class_flg)
100 1 经济学 Y
100 2 历史学 N
200 2 历史学 N
200 3 考古学 Y
200 4 计算机 N
300 4 计算机 N
400 5 化学 N
500 6 数学 N

有的学生选择了同时修几门课程(100,200)也有的学生只选择了一门课程(300,400,500)。选修多门课程的学生,要选择一门课程作为主修,主修flag里面写入 Y。只选择一门课程的学生,主修flag为N(实际上要是写入Y的话,就没有下面的麻烦事了,为了举例子,还请多多包含)。
现在我们要按照下面两个条件对这个表进行查询
  1. 只选修一门课程的人,返回那门课程的ID
  2. 选修多门课程的人,返回所选的主课程ID

简单的想法就是,执行两条不同的SQL语句进行查询。
条件1
--条件1:只选择了一门课程的学生
SELECT std_id, MAX(class_id) AS main_class
FROM Studentclass
GROUP BY std_id
HAVING COUNT(*) = 1;

执行结果1
STD_ID   MAIN_class
------   ----------
300      4
400      5
500      6

条件2
--条件2:选择多门课程的学生
SELECT std_id, class_id AS main_class
FROM Studentclass
WHERE main_class_flg = 'Y' ;

执行结果2
STD_ID  MAIN_class
------  ----------
100     1
200     3

如果使用Case函数,我们只要一条SQL语句就可以解决问题,具体如下所示
SELECT  std_id,
CASE WHEN COUNT(*) = 1  --只选择一门课程的学生的情况
THEN MAX(class_id)
ELSE MAX(CASE WHEN main_class_flg = 'Y'
THEN class_id
ELSE NULL END
)
END AS main_class
FROM Studentclass
GROUP BY std_id;

运行结果
STD_ID   MAIN_class
------   ----------
100      1
200      3
300      4
400      5
500      6

通过在Case函数中嵌套Case函数,在合计函数中使用Case函数等方法,我们可以轻松的解决这个问题。使用Case函数给我们带来了更大的自由度。
最后提醒一下使用Case函数的新手注意不要犯下面的错误
CASE col_1
WHEN 1        THEN 'Right'
WHEN NULL  THEN 'Wrong'
END

在这个语句中When Null这一行总是返回unknown,所以永远不会出现Wrong的情况。因为这句可以替换成WHEN col_1 = NULL,这是一个错误的用法,这个时候我们应该选择用WHEN col_1 IS NULL。
posted @ 2006-07-20 17:57 Ronin 阅读(2981) 评论(1) 编辑
Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
         WHEN '1' THEN '男'
         WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
         WHEN sex = '2' THEN '女'
ELSE '其他' END

这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
--比如说,下面这段SQL,你永远无法得到“第二类”这个结果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类'
         WHEN col_1 IN ('a')       THEN '第二类'
ELSE'其他' END

下面我们来看一下,使用Case函数都能做些什么事情。

一,已知数据按照另外一种方式进行分组,分析。

有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key)
国家(country) 人口(population)
中国 600
美国 100
加拿大 100
英国 200
法国 300
日本 250
德国 200
墨西哥 50
印度 250

根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。
人口
亚洲 1100
北美洲 250
其他 700

想要解决这个问题,你会怎么做?生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。
如果使用Case函数,SQL代码如下:
SELECT  SUM(population),
        CASE country
                WHEN '中国'     THEN '亚洲'
                WHEN '印度'     THEN '亚洲'
                WHEN '日本'     THEN '亚洲'
                WHEN '美国'     THEN '北美洲'
                WHEN '加拿大'  THEN '北美洲'
                WHEN '墨西哥'  THEN '北美洲'
        ELSE '其他' END
FROM    Table_A
GROUP BY CASE country
                WHEN '中国'     THEN '亚洲'
                WHEN '印度'     THEN '亚洲'
                WHEN '日本'     THEN '亚洲'
                WHEN '美国'     THEN '北美洲'
                WHEN '加拿大'  THEN '北美洲'
                WHEN '墨西哥'  THEN '北美洲'
        ELSE '其他' END;

同样的,我们也可以用这个方法来判断工资的等级,并统计每一等级的人数。SQL代码如下;
SELECT
        CASE WHEN salary <= 500 THEN '1'
             WHEN salary > 500 AND salary <= 600  THEN '2'
             WHEN salary > 600 AND salary <= 800  THEN '3'
             WHEN salary > 800 AND salary <= 1000 THEN '4'
        ELSE NULL END salary_class,
        COUNT(*)
FROM    Table_A
GROUP BY
        CASE WHEN salary <= 500 THEN '1'
             WHEN salary > 500 AND salary <= 600  THEN '2'
             WHEN salary > 600 AND salary <= 800  THEN '3'
             WHEN salary > 800 AND salary <= 1000 THEN '4'
        ELSE NULL END;

二,用一个SQL语句完成不同条件的分组。

有如下数据
国家(country) 性别(sex) 人口(population)
中国 1 340
中国 2 260
美国 1 45
美国 2 55
加拿大 1 51
加拿大 2 49
英国 1 40
英国 2 60

按照国家和性别进行分组,得出结果如下
国家
中国 340 260
美国 45 55
加拿大 51 49
英国 40 60

普通情况下,用UNION也可以实现用一条语句进行查询。但是那样增加消耗(两个Select部分),而且SQL语句会比较长。
下面是一个是用Case函数来完成这个功能的例子
SELECT country,
       SUM( CASE WHEN sex = '1' THEN 
                      population ELSE 0 END),  --男性人口
       SUM( CASE WHEN sex = '2' THEN 
                      population ELSE 0 END)   --女性人口
FROM  Table_A
GROUP BY country;

这样我们使用Select,完成对二维表的输出形式,充分显示了Case函数的强大。

三,在Check中使用Case函数。

在Check中使用Case函数在很多情况下都是非常不错的解决方法。可能有很多人根本就不用Check,那么我建议你在看过下面的例子之后也尝试一下在SQL中使用Check。
下面我们来举个例子
公司A,这个公司有个规定,女职员的工资必须高于1000块。如果用Check和Case来表现的话,如下所示
CONSTRAINT check_salary CHECK
           ( CASE WHEN sex = '2'
                  THEN CASE WHEN salary > 1000
                        THEN 1 ELSE 0 END
                  ELSE 1 END = 1 )

如果单纯使用Check,如下所示
CONSTRAINT check_salary CHECK
           ( sex = '2' AND salary > 1000 )

女职员的条件倒是符合了,男职员就无法输入了。
posted @ 2006-07-20 13:17 Ronin 阅读(19887) 评论(13) 编辑

想在网上找一下VB.Net中,哪些是VB6.0遗留下来的东西,哪些是VB.Net增加的东西。结果中文的没有找到,找到了一个日文网页。简单的翻译了一下,放在这里,供需要的人参考。

VB6.0和VB.Net的对照表
VB6.0 VB.NET
AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1.Items.Add
Abs 函数 System.Math.Abs 方法
API 函数关系 Microsoft Win32和Microsoft .NET Framework API的对应
App.Path

1. System.Reflection.Assembly.GetExecutingAssembly.Location
2. Application.StartupPath
3. Application.ExecutablePath
4. System.AppDomain.CurrentDomain.BaseDirectory

App.PrevInstance Process.GetProcessesByName(pn).GetUpperBound(0) > 0
As Any 关键词 Visual Basic .NET 不提供支持。 参考方法(SendMessage)
AscB 函数 Microsoft.VisualBasic.Strings.Asc 函数
Atn 函数 System.Math.Atan 方法
AutoRedraw 属性 没有相同项目。
Beep Microsoft.VisualBasic.Beep()
Caption 属性 Text 属性
CBool 函数 CBool 函数
CByte 函数 CByte 函数
CDate 函数 CDate 函数
CDbl 函数 CDbl 函数
CDec 函数 CDec 函数
ChDir 语句 Microsoft.VisualBasic.FileSystem.ChDir 函数
System.IO.Directory.SetCurrentDirectory 方法
ChDrive 语句 Microsoft.VisualBasic.FileSystem.ChDrive 函数
Chr$ 函数、ChrB 函数 Microsoft.VisualBasic.Strings.Chr 函数
CInt 函数 CInt 函数
Circle 方法 System.Drawing.Graphics.DrawEllipse 方法
CLong 函数 CLong 函数
Close 语句 Microsoft.VisualBasic.FileSystem.FileClose 函数
System.IO.StreamReader.Close 方法 
Clipboard 对象

System.Windows.Forms.Clipboard 命名空间

ClipControls 属性 没有相同项目。
Cls 方法 System.Drawing.Graphics.Clear 方法
Color QBColor
vbBlack
RGB()
System.Drawing.Color.Black
Command System.Environment.GetCommandLineArgs
Combo1.AddItem ComboBox1.Items.Add
Cos 函数 System.Math.Cos 方法
CSng 函数 CSng 函数
CStr 函数 CStr 函数
CurDir 函数 System.IO.Directory.GetCurrentDirectory() 方法
Currency 类型 Decimal 类型
CurrentX 属性 各种图形相关方法的 x 参数。比如、DrawRectangle(pen, x, y, width, height)
CurrentY 属性 各种图形相关方法的 y 参数。比如、DrawRectangle(pen, x, y, width, height)
Date 函数、Date 语句 System.DateTime.Now System.DateTime.Today.ToString
Date$ 函数 Microsoft.VisualBasic.DateAndTime.DateString
DateAdd 函数 System.DateTime.AddYears 方法 AddMonths AddDays
DateDiff 函数 Microsoft.VisualBasic.DateDiff 函数
DateValue 函数 System.DateTime.Parse 方法  CDate 函数
DatePart 函数 Microsoft.VisualBasic.DatePart 函数
Day 函数 System.DateTime.Day 属性 
Debug.Print Debug.WriteLine
DeleteSetting 语句 Microsoft.VisualBasic.Interaction.DeleteSetting
DoEvents 函数 System.Windows.Forms.Application.DoEvents 方法
DrawMode 属性 System.Drawing.Pen.Color 属性
DrawStyle 属性 System.Drawing.Pen.PenType 属性
DrawWidth 属性 System.Drawing.Pen.Width 属性
Environ Microsoft.VisualBasic.Interaction.Environ
System.Environment.GetFolderPath
Exp 函数 System.Math.Exp 方法
FillColor 属性 System.Drawing.SolidBrush.Color 属性
FileCopy 语句 Microsoft.VisualBasic.FileSystem.FileCopy 函数
System.IO.File.Copy 方法
FileLen 函数 System.IO.FileInfo.Length 属性
Microsoft.VisualBasic.FileSystem.FileLen
FillStyle 属性 System.Drawing.Pen.Brush 属性
Get 语句 Microsoft.VisualBasic.FileSystem.FileGet 函数
GetAttr System.IO.File.GetAttributes
GotFocus 事件 Enter 事件
GetSetting 语句 Microsoft.VisualBasic.Interaction.GetSetting
FileDateTime 函数 System.IO.File.GetCreationTime 方法
HasDC 属性 没有相同项目。
HDC 属性 没有相同项目。
Height 属性 Control.Size 属性
Hour 函数 System.DateTime.Hour 属性
hwnd Form1.hwnd Form1.Handle 定义处也是 ByVal hWnd As IntPtr
Image 属性 Image 属性
Input # 语句 Microsoft.VisualBasic.FileSystem.Input 函数
InStr 函数 System.String.IndexOf
Microsoft
.VisualBasic.Strings.InStr 函数
InStrB 函数 Microsoft.VisualBasic.Strings.InStr 函数
InStrRev 函数 System.String.LastIndexOf 方法
Microsoft.VisualBasic.Strings.InStrRev 函数
Int 函数 System.Math.Floor 方法       System.Math.Ceiling 方法
Microsoft
.VisualBasic.Int 函数 
Integer 类型 Long 类型 Dim y As Integer 改为 Dim x As Short
Dim y As Long 改为 Dim y As Integer
IsEmpty 函数 Microsoft.VisualBasic.Information.IsNothing 函数
IsDate 函数 Microsoft.VisualBasic.IsDate 函数
IsNull 函数 Microsoft.VisualBasic.Information.IsDBNull 函数
IsObject 函数 Microsoft.VisualBasic.Information.IsReference 函数
Join 函数 System.String.Join 方法
KeyAscii e.KeyChar 属性
Kill 语句 Microsoft.VisualBasic.FileSystem.Kill 函数
System.IO 命名空间 FileInfo.Delete 方法
LBound UBound System.Array.GetLowerBound System.Array.GetUpperBound
LCase$ 函数 String.ToLower 方法 
Microsoft.VisualBasic.Strings.LCase 函数
Left 属性 Control.Location 属性
Left$、LeftB、LeftB$ System.String.SubString
Microsoft.VisualBasic.Strings.Left 函数
Len System.String.Length
Microsoft.VisualBasic.Strings.Len
LenB
System.Text.Encoding.GetEncoding("gb2312").GetByteCount(str1)
System
.Text.Encoding.Unicode.GetByteCount("123大小大") '结果 12
System.Text.Encoding.Default.GetByteCount("123大小大") '结果 9
Line 方法 System.Drawing.Graphics.DrawLine 方法
Line Input # 语句 Microsoft.VisualBasic.FileSystem.LineInput 函数
List1.AddItem ListBox1.Items.Add
LoadPicture 函数 System.Drawing.Image.FromFile("..\..\test.bmp")
Lock 语句 Microsoft.VisualBasic.FileSystem.Lock 函数
Log 函数 system.Math.Log 方法
Long 类型 Integer 类型 Dim y As Integer 改为 Dim x As Short
Dim y As Long 改为 Dim y As Integer
LostFocus 事件 Leave 事件
LTrim$ 函数 System.String.TrimStart
Microsoft.VisualBasic.Strings.LTrim 函数
Mid 函数 System.String.SubString
Microsoft.VisualBasic.Strings.Mid 函数
MidB 函数 Microsoft.VisualBasic.Strings.Mid 函数
Minute 函数 System.DateTime.Minute 属性
MkDir 语句 Microsoft.VisualBasic.FileSystem.MkDir 函数
System.IO.Directory.CreateDirectory 方法
MousePointer=11
Screen.MousePointer
System.Windows.Forms.Cursors.WaitCursor()
System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
Mod 运算符 Math.IEEERemainder 方法 Debug.WriteLine(Math.IEEERemainder(10, 3)) '结果 1
System.Math.DivRem(10, 3, intResult)   '结果  3 (10 \ 3)
Debug.WriteLine(intResult)             
'结果  1 (10 Mod 3)
Month 函数 System.DateTime.Month 属性
MsgBox System.Windows.Forms.MessageBox.Show("Hello, world!")
Microsoft
.VisualBasic.MsgBox
Name 语句 Microsoft.VisualBasic.FileSystem.Rename 函数
Now 函数 System.DateTime.Now Microsoft.VisualBasic.Now
Open 语句 Microsoft.VisualBasic.FileSystem.FileOpen 函数
Option Base 语句 Visual Basic .NET没有提供支持。
Option Private Visual Basic .NET没有提供支持。
PaintPicture 方法 System.Drawing.Graphics.DrawImage 方法
Point 方法 不存在相同的Form和控件。
使用Bitmap时用System.Drawing.Bitmap.GetPixel 方法
Print 方法 System.Drawing.Graphics.DrawString 方法
PrintForm Visual Basic .NET没有提供支持。
Print# 语句 Microsoft.VisualBasic.FileSystem.Print 函数
Private 语句
Public 语句
Private Public
Friend Protected Protected Friend
Pset 方法 不存在相同的Form和控件。
使用Bitmap时用System.Drawing.Bitmap.SetPixel 方法
Put 语句 Microsoft.VisualBasic.FileSystem.FilePut 函数
Replace 函数 Microsoft.VisualBasic.Strings.Replace 函数
Right$ 函数、RightB 函数 System.String.SubString
Microsoft.VisualBasic.Strings.Right 函数
ReDim 语句 ReDim MyArray(5)     ReDim Preserve MyArray(15)  语句
RmDir 语句 Microsoft.VisualBasic.FileSystem.RmDir 函数 System.IO.Directory.Delete() 方法
Round 函数 System.Math.Round 方法
RTrim$ 函数 System.String.TrimEnd
Microsoft.VisualBasic.Strings.RTrim
SaveSetting 语句 Microsoft.VisualBasic.Interaction.SaveSetting 函数
Scale 方法 Visual Basic .NET没有提供支持。
Screen.ActiveControl
Screen.ActiveForm
Screen.Fonts
Screen.Height
Screen.MousePointer
Screen.Width
其他 Screen 对象
System.Windows.Forms.Application.ActiveForm.ActiveControl
System.Windows.Forms.Application.ActiveForm
System.Drawing.FontFamilies
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
System.Drawing.Cursor.Current
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
其他
Second 函数 System.DateTime.Second 属性
SendKeys 语句 System.Windows.Forms.SendKeys.Send("^C")
SetAttr System.IO.File.SetAttributes
Sgn 函数 System.Math.Sign 函数
Shell Microsoft.VisualBasic.Shell
Sin 函数 System.Math.Sin 函数
Space 函数 Microsoft.VisualBasic.Strings.Space 函数
Sqr 函数 System.Math.Sqrt 函数
StrComp 函数 Microsoft.VisualBasic.Strings.StrComp 函数
StrConv 函数 Microsoft.VisualBasic.Strings.StrConv 函数
String$(256, Chr(0)) buf = New String(CChar(" "), 256) Microsoft.VisualBasic.Strings.StrDup 函数
StrReverse 函数 Microsoft.VisualBasic.Strings.StrReverse 函数
Tan 函数 System.Math.Tan 方法
TextHeight 属性 System.Drawing.Font.Height 属性
TextWidth 属性 System.Drawing.Graphics.MeasureString 方法
Time$ 函数 Microsoft.VisualBasic.DateAndTime.Timer 属性
System.DateTime.Now.TimeOfDay
TimeValue 函数 System.DateTime.Parse 方法  CDate 函数
Top 属性 Control.Location 属性
Trim$ 函数 Microsoft.VisualBasic.Strings.Trim 函数
System.String.Trim
Type 语句 Structure 语句
UCase$ 函数 String.ToUpper 方法 
Microsoft.VisualBasic.Strings.UCase 函数
Unlock 语句 Microsoft.VisualBasic.FileSystem.Unlock 函数
Unload 事件 Closed 事件 Me.Close()
Variant 型 Dim x As Variant 改为 Dim x As Object
VarPtr、StrPtr、ObjPtr Dim MyGCHandle As GCHandle = GCHandle.Alloc(o,GCHandleType.Pinned)
Dim Address As Integer = CInt(MyGCHandle.AddrOfPinnedObject())
MyGCHandle.Free() ' 允许对象实例再移动。
vbCrLf Microsoft.VisualBasic.Constants.vbCrLf
Microsoft.VisualBasic.vbCrLf
Weekday Microsoft.VisualBasic.Weekday System.DateTime.DayOfWeek
WeekdayName Microsoft.VisualBasic.WeekdayName (System.DateTime 构造体中没有相同项目)
Width 属性 Control.Size 属性
Write # 语句 Microsoft.VisualBasic.FileSystem.Write 函数
Year 函数 System.DateTime.Year 属性

posted @ 2006-06-27 17:29 Ronin 阅读(5153) 评论(2) 编辑
实际上在日本以开发搜索引擎闻名的网站Goo于2003年10月2日宣布,从2003年12月开始该网站将采用Google的搜索引擎之后,日本的国产引擎基本上就已经销声匿迹了。
 直到最近,Marsflag公司开发的搜索引擎的登场,日本本国开发的搜索引擎重新引起了人们的注意。从这个公司的名字也可以看出这个公司的野心和信念,要在火星上立旗,要变不可能为可能。
这个引擎有两个比较不错的特性,一个是它会抓取目标的画面,作为预览显示;另外一个就是它会自动屏蔽有害网站。同时,这个公司也宣称,虽然他们的搜索引擎的算法还比不上google,但是他们的面向对象主要是那些电脑的初学者,他们希望普通人能够更容易的使用搜索引擎,寻找他们想要的信息。
posted @ 2006-06-20 16:34 Ronin 阅读(792) 评论(1) 编辑
摘要: 这篇是对我昨天写的那篇 .Net中TextBox对于焦点的控制的补足部分,请放在一起阅读。不知道是什么原因,这个Validating事件,有些情况下会在你不想让它发生的时候,自动发生。主要是下面几种情况: 调用Me.Close 点击Form有上角的叉来关闭窗口 在CausesValidation = False的按钮上面按回车键(用方向键移动焦点)按空格键的时候Validating事件不会发生。)...阅读全文
posted @ 2006-06-09 17:40 Ronin 阅读(914) 评论(0) 编辑
摘要: 假设我们要作如下的设计,有两个TextBox,第一个TextBox要求的数据为日期类型,当焦点离开时把输入的日期格式进行统一。代码很简单,如下所示。 TextBox1.Text = CDate(TextBox1.Text).ToString("yyyy/MM/dd") 但是,如果要实现上述功能,在哪个事件中写代码最为合适呢?另外,在焦点转移之前,还要对输入的数据进行妥当性检查, 比如在这个例子中检...阅读全文
posted @ 2006-06-08 11:23 Ronin 阅读(3350) 评论(5) 编辑
摘要: 早就知道日文的字体,同样的字体有带P和不带P的区别。比如"MS 明朝"和"MSP 明朝"。但是一直不知道他们的区别,直到最近。有P的是プロポーショナルフォント(Proportinal Font)-变幅字体没有P的是等(固定)幅フォント(Typewriter Font)-等幅字体变幅字体字体幅度有大有小,自动调整每行字的个数。等幅字体字体固定大小,即使有标点符号也不会改变每行字(标点符号)的个数。在...阅读全文
posted @ 2006-06-06 09:00 Ronin 阅读(5308) 评论(1) 编辑
摘要: 有如下数据库定义数据库名称td_order_liu列名:订货号,商品名,显示号码其中显示号码并不是连续的1,2,3…N,也就是说并非直接代表了那一行的位置。现在,要实现如下两个功能1,数据按照“显示号码”排序后,选取第n行数据 SQL: select * from (select订货号, 商品名, ROW_NUMBER() OVER (PARTITION BY ...阅读全文
posted @ 2006-06-05 15:41 Ronin 阅读(344) 评论(0) 编辑