博文

MSFlexGrid控件可编辑的简单实现方法(2005-07-22 13:13:00)

摘要:
在窗体上放一MSFlexGrid和Text控件各一个。
代码如下:

Private Sub Form_Load()
    Text1.Move -10000, -10000, 1, 1
    Text1.Text = ""
    MSFlexGrid1.Cols = 6  '6列 可根据自己需要调整。
    MSFlexGrid1.Rows = 6 '6行
End Sub

Private Sub MSFlexGrid1_EnterCell()
    MSFlexGrid1.CellBackColor = vbBlue
    MSFlexGrid1.CellForeColor = vbWhite
    Text1.Text = MSFlexGrid1.Text
    Text1.SelStart = 0
    Text1.SelLength = Len(Text1.Text)
End Sub

Private Sub MSFlexGrid1_LeaveCell()
    MSFlexGrid1.CellBackColor = vbWhite
    MSFlexGrid1.CellForeColor = vbBlue
End Sub

Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    T......

阅读全文(3239) | 评论:0

加强型的msflexgrid3(2005-07-22 13:10:00)

摘要:'以下程式处理Multi-column Selection的问题
Private Sub ProcMultiColSel(ByVal Shift As Integer)
Dim i As Long, HaveSel As Boolean
Dim SelSt As Long, SelEnd As Long
Dim OldRowSel As Long, OldColSel As Long
With MSFlexGrid1
OldRowSel = .RowSel: OldColSel = .ColSel
If HaveSelEntireCol Then
   '如果有整行被选取的清况,则计算选取的起始结束行
   SelSt = IIf(.Col <= .ColSel, .Col, .ColSel)
   SelEnd = IIf(.Col > .ColSel, .Col, .ColSel)
   For i = SelSt To SelEnd
       ColSelect(i) = True
   Next
   .CellBackColor = .BackColorSel
   If Shift <> vbCtrlMask Then '没有按Ctl键则清除其他Column的Selection
      Call RefreshCols(SelSt, SelEnd)
   End If
Else
   HaveSel = False
   For i = 1 To .Cols - 1
      ......

阅读全文(3079) | 评论:0

加强型的msflexgrid2(2005-07-22 13:09:00)

摘要:'以下在Form需一个MSFlexGrid, 一个TextBox
Option Explicit
Private OldText As String
Private ColSelect() As Boolean
Private SaveCellBkColor As Long
Private Sub Form_Load()
Text1.Visible = False
Me.Show
With MSFlexGrid1
     .Cols = 5
     .Rows = 15
     ReDim ColSelect(1 To .Cols - 1)
     SaveCellBkColor = .CellBackColor
     Call InitGrid
     .AllowBigSelection = True
     .FillStyle = flexFillRepeat
     '.AllowUserResizing = True  '请事先设好
End With
End Sub

Private Sub InitGrid()
Dim i As Long
With MSFlexGrid1
  .Row = 0
  For i = 1 To .Cols - 1
      .Col = i: .Text = "Col" + Format(i, "00") '若Cols超出99,则修改Format
&......

阅读全文(3355) | 评论:0

加强型的 MSFlexGrid&nbsp;1(2005-07-22 13:08:00)

摘要:加强型的 MSFlexGrid
来源:cww 更改王国荣的范例
修改过王国荣先生的范後,功能如下:
1.在MSFlexGrid上按Enter时,可以编修当格(Current Cell)的内容
2.在MSFlexGrid上Click时,可以编修当格(Current Cell)的内容
3.在MSFlexGrid上固定列与固定行上面按Mouse右键时可以修改其Title
4.允许MultiLine/MultiCol的Selection 与按Ctl-Mouse左键的MultiSelect Columns
5.进入Cell的EditMode时,按up/Down键会离开Current Cell而进入上/下 一行的Cell
6.进入Cell的EditMode时,按Escape回覆原本的字串
MSFlexGrid内的资料原本是不能让使用者直接KeyIn的,所以找个变通的方式,便是使用
TextBox来Keyin,再把TextBox内的值放入MSFlexGrid中,但重点就变成TextBox如何设
定位置、大小於MSFlexGrid之上。这个部份在toEditGrid的程式中做。何时启动TextBox
让之可以输入资料呢,有两个地方,一个在MSFlexGrid上的Mouse_Click,而且考虑可以
在Grid上做多栏的选取,所以只有在.ColSel = .Col And .RowSel = .Row时才可以进入
EditMode。另一个地方在MSFlexGrid上按Enter,也会令之进入EditMode。而离开EditMode
的时机在於TextBox上按Enter/Up/Down/Esc 键。

另外,我们如果想要保留MSFlexGrid可以整列整行选取,而且又可以更动MSFlexGrid最
上与最左边的固定列之Title,我的做法是,在MSFlexGrid上MouseUp时来判定Mouse所在
的Col与Row,如果MouseCol=0 or MouseRow = 0代表是在FixedCol/FixedRow 上按下
Mouse,如果按的是右键表示要修改FixCol或FixRow的Title,如果是左键,那不做任何

阅读全文(2966) | 评论:0

VB中使用EXCEL输出(2005-07-03 22:22:00)

摘要:VB中使用EXCEL输出

Private Sub cmdSwatch_Click()
Dim xls As excel.Application
Dim xlbook As excel.Workbook
'On Error GoTo exlError
Dim i As Integer
    If Dir(Text1.Text) <> "" Then '此目录下如有同名文件给出提示,并作相应处理
        If MsgBox("文件已存在,是否覆盖!", vbYesNo + vbQuestion, "另存为工程造价文件") = vbNo Then
            Exit Sub
        Else
            Kill (Text1.Text) '删除文件
        End If
    End If

    '************打开工作表***************
    Set xls = New excel.Application
    xls.Visible = True
    Set xlbook = xls.Workbooks.Add
   &......

阅读全文(3438) | 评论:0

VB条形码编码(2005-07-03 22:17:00)

摘要:
VB条形码编码
类型:转载

    条形码技术广泛应用于各行各业,你随便拿起一本书、一包薯片都可以在外包装上找到,利用条码读取机便可将这一条条黑白相间、粗细不同的垂直线条识别而转换为具体的数值,并将这个数值返回到计算机中进行处理。正是这样,有了条形码技术,人们很方便就能取得该商品的有关信息如商品名称、规格、价格等,因为每种商品都有其对应的条形码,这个条形码计算机(终端、服务器)中就可以迅速返回用户,从数据库中读取约定的商品,信息使得销售、进货、存货等等管理更有效率,也对防止假冒伪劣又一定的抑制作用。
条码的编码方式有多种,不同行业,不同国家标准也不尽相同。条形码通过线条的粗细来表达其数值。至于接口方式一般也有多种,如键盘口的、串行口的。一般传感装置是光罩式的,也有笔式的。
上面笼笼统统地谈了一些关于条形码的知识,可帮助你更好地阅读以下更深入的内容。条形码有关概念先说到这里,接着是详细具体的编程实现方法。

     
一、条形码的读取
    用过键盘口式的扫条码工具的朋友就知道,它就如同在鍵盘上按下数字鍵一样,基本不需任何编程和处理。但如果你使用的是其它接口的话,可能你就要为该设备编写通讯代码了。以下有一段简单的25针串口的条码读取器通讯代码。
Option Explicit
Dim sData As String
Private Sub Form_Load()
With MSComm1
   .CommPort = 3 '设为COM3,试运行的系统而定,你可提供一个Combox让用户选择。
   .PortOpen = True '打开通讯端口
End With
End Sub

     
Private Sub MSComm1_OnComm()
  
  Dim EndPos As Integer<......

阅读全文(9274) | 评论:0

VB6.0 调用存储过程的例子(方法二)(2005-06-26 13:41:00)

摘要:VB6.0 调用存储过程的例子(方法二)
类型:转载

                    VB6.0 调用存储过程的例子(方法二)


     本人推荐使用方法一来取存储过程,当然前提是知道将要使用的参数化命令的详细情况,通过在代码中创建参数,其执行的速度快。



如果不知道要使用的参数化命令,本人整理了一份通过使用参数(Parameters)对象来获取存储过程的记录集的内容,但该执行方式速度没有方法一理想。



代码整理如下,你可以直接将该代码Copy到Form1窗体中进行调试。

其中函数GetDataType可以修改为自己所需的处理方式,在这里所有的代码都是为了测试方便所有,你也可以改为自己所需的相应处理。



Sub CreateParms()

    Dim ADOCmd As New ADODB.Command

    Dim ADOPrm As New ADODB.Parameter

    Dim ADOCon As ADODB.Connection

    Dim ADORs As ADODB.Recordset

    Dim strConnect As String

    Dim strFieldName As String

       

   ......

阅读全文(3250) | 评论:0

VB6.0 调用存储过程的例子(方法一)(2005-06-26 13:39:00)

摘要:VB6.0 调用存储过程的例子(方法一)
类型:转载

                VB6.0 调用存储过程的例子(方法一)


            (说明:以下代码摘自微软的MSDN,经过测试没问题。使用该方法的前提条件是必须知道将要使用的参数化命令的详细情况。)



打开Form1窗体,Copy以下的代码到窗体中,该段代码将测试存储过程ADOTestRPE的返回值、输入参数及输出参数,测试的过程中,可能需要修改链接字符串。



Sub CreateParms()

    Dim ADOCmd As New ADODB.Command

    Dim ADOPrm As New ADODB.Parameter

    Dim ADOCon As ADODB.Connection

    Dim ADORs As ADODB.Recordset

    Dim sParmName As String

    Dim strConnect As String

    Dim rStr As String

   

    On Error GoTo ErrHandler

   

  ......

阅读全文(3154) | 评论:0

VB调用存储过程的例子(2005-06-26 13:38:00)

摘要: VB调用存储过程的例子 前言
类型:转载
(说明:以下代码摘自微软的MSDN,经过测试没问题。)


         VB调用存储过程的方法很多,如利用ADO对象的Recordset.Open方法,ADO对象的Connection.Excute方法等,都可以获得记录集信息。本主题讨论的是使用Parameter对象调用存储过程,而且可以获得许多意外的信息。

首先需要在Sql Server中建立一个存储过程。请确定已安装了Sql Server 2000的任何版本,且含有Pubs数据库。

打开“查询分析器”,启动你本地的SqlServer,然后将以下的Sql语句Copy到所打开的查询编辑框中。按下“F5”键。OK,存储过程ADOTestRPE便生成了。



Use Pubs

      GO

      if exists (select * from sysobjects where id =

        object_id('dbo.ADOTestRPE') and sysstat & 0xf = 4)

      drop procedure dbo.ADOTestRPE

GO



      create procedure ADOTestRPE

      (

      @SetRtn  INT=0 OUTPUT,
<......

阅读全文(4832) | 评论:0

使用SQL存储过程有什么好处(2005-06-24 16:40:00)

摘要:使用SQL存储过程有什么好处

■SQL存储过程执行起来比SQL命令文本快得多。当一个SQL语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它。

■调用存储过程,可以认为是一个三层结构。这使你的程序易于维护。如果程序需要做某些改动,你只要改动存储过程即可

■你可以在存储过程中利用Transact-SQL的强大功能。一个SQL存储过程可以包含多个SQL语句。你可以使用变量和条件。这意味着你可以用存储过程建立非常复杂的查询,以非常复杂的方式更新数据库。

■最后,这也许是最重要的,在存储过程中可以使用参数。你可以传送和返回参数。你还可以得到一个返回值(从SQL RETURN语句)。

环境:WinXP+VB6+sp6+SqlServer2000



数据库:test

表:Users



CREATE TABLE [dbo].[users] (

       [id] [int] IDENTITY (1, 1) NOT NULL ,

       [truename] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,

       [regname] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,

      [pwd] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,

       [sex] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,

    ......

阅读全文(4012) | 评论:0