精华内容
下载资源
问答
  • Instant VB (C# to VB.NET)

    2019-02-11 18:08:45
    c#代码转vb Download the latest build of any of our converters below. Our converters run on Windows with version 4.5 or higher of the .NET Framework. The Free Edition limits conversion output to 100 ...
  • OUT_MSG”, SqlDbType.VarChar, 20).Direction = ParameterDirection.Output .ExecuteNonQuery() If .Parameters(“@O_OUT_MSG”).Value() <> “0” Then Return (.Parameters(“@O_OUT_MSG”).Value()) End If End ...

    sqlc = New SqlClient.SqlConnection(strconn)
    sqlc.Open()

    dc = New SqlCommand(“[dbo].[ERP_半成品上架回传]”, sqlc)

    With dc
    .CommandType = CommandType.StoredProcedure
    .Parameters.Add(“@i_Organization_id”, SqlDbType.Int).Value = Organization_id
    .Parameters.Add(“@i_Transfer_Type”, SqlDbType.VarChar, 1).Value = Transfer_Type
    .Parameters.Add(“@i_FentryID”, SqlDbType.Int).Value = FentryID
    .Parameters.Add(“@i_Batch_Num”, SqlDbType.VarChar, 30).Value = Batch_Num
    .Parameters.Add(“@i_Receive_Locator”, SqlDbType.VarChar, 30).Value = Receive_Locator
    .Parameters.Add(“@i_Quantity”, SqlDbType.Int).Value = Quantity

    .Parameters.Add(“@O_OUT_MSG”, SqlDbType.VarChar, 20).Direction = ParameterDirection.Output

    .ExecuteNonQuery()

    If .Parameters(“@O_OUT_MSG”).Value() <> “0” Then
    Return (.Parameters(“@O_OUT_MSG”).Value())
    End If

    End With

    展开全文
  • VB中Execute的用法

    千次阅读 2016-11-07 19:27:32
    VB中Execute是指ADO命令之一:Execute 方法。 Execute 方法,执行在 CommandText 属性指定的查询、SQL 语句或存储过程。 语法 对于按行返回的 Command: Set recordset = command.Execute( ...

    VB中Execute是指ADO命令之一:Execute 方法。

    • Execute 方法,执行在 CommandText 属性中指定的查询、SQL 语句或存储过程。

      语法

      对于按行返回的 Command:

      Set recordset = command.Execute(
      RecordsAffected, Parameters, Options
      )

      对于不按行返回的 Command:

      command.Execute RecordsAffected,
      Parameters, Options

      返回值

      返回 Recordset 对象引用。

      参数

      RecordsAffected    可选,长整型变量搜索,提供者向其返回操作所影响的记录数目。

      Parameters    可选,变体型数组,使用 SQL
      语句传送的参数值。(用该参数传送时输出参数将不返回正确值。)

    • CommandText 属性 (ADO),包含要发送给提供者的命令的文本。

    • Execute、Requery 和 Clear 方法范例

      该范例演示运行来自 Command 对象和 Connection 对象的 Execute 方法。同时使用
      Requery 方法检索记录集中的当前数据,并用 Clear 方法清除 Errors 集合的内容。运行该过程需要
      ExecuteCommand 和 PrintOutput 过程。

      Public Sub ExecuteX()

        Dim strSQLChange As String
        Dim strSQLRestore As String
        Dim strCnn As String
        Dim cnn1 As ADODB.Connection
        Dim cmdChange As ADODB.Command
        Dim rstTitles As ADODB.Recordset
        Dim errLoop As ADODB.Error

        ' 定义两个 SQL 语句作为命令文本执行。
        strSQLChange = "UPDATE Titles SET Type = " & _
           "'self_help' WHERE Type = 'psychology'"
        strSQLRestore = "UPDATE Titles SET Type = " & _
           "'psychology' WHERE Type = 'self_help'"

        ' 打开连接。
           strCnn = "Provider=sqloledb;" & _
           "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
        Set cnn1 = New ADODB.Connection
        cnn1.Open strCnn

        ' 创建命令对象。
        Set cmdChange = New ADODB.Command
        Set cmdChange.ActiveConnection = cnn1
        cmdChange.CommandText = strSQLChange
       
        ' 打开标题表。
        Set rstTitles = New ADODB.Recordset
        rstTitles.Open "titles", cnn1, , , adCmdTable

        ' 打印原始数据报告。
        Debug.Print _
           "Data in Titles table before executing the query"
        PrintOutput rstTitles

        ' 清除 Errors 集合的外部错误。
        cnn1.Errors.Clear

        ' 调用 ExecuteCommand 子例程执行 cmdChange 命令。
        ExecuteCommand cmdChange, rstTitles
       
        ' 打印新数据报告。
        Debug.Print _
           "Data in Titles table after executing the query"
        PrintOutput rstTitles

        ' 使用 Connection 对象的 execute 方法执行 SQL 语句以恢复数据。
        ' 捕获错误,必要时检查 Errors 集合。
        On Error GoTo Err_Execute
        cnn1.Execute strSQLRestore, , adExecuteNoRecords
        On Error GoTo 0

        ' 通过再查询记录集检索当前数据。
        rstTitles.Requery

        ' 打印已恢复数据的报告。
        Debug.Print "Data after executing the query " & _
           "to restore the original information"
        PrintOutput rstTitles

        rstTitles.Close
        cnn1.Close
       
        Exit Sub
       
      Err_Execute:

        ' 将任何由执行查询引起的错误通知用户。
        If Errors.Count > 0 Then
           For Each errLoop In Errors
              MsgBox "Error number: " & errLoop.Number & vbCr & _
                 errLoop.Description
           Next errLoop
        End If
       
        Resume Next

      End Sub

      Public Sub ExecuteCommand(cmdTemp As ADODB.Command, _
        rstTemp As ADODB.Recordset)

        Dim errLoop As Error
       
        ' 运行指定的 Command 对象。捕获错误,必要时检查 Errors 集合。
        On Error GoTo Err_Execute
        cmdTemp.Execute
        On Error GoTo 0

        '通过再查询记录集检索当前数据。
        rstTemp.Requery
       
        Exit Sub

      Err_Execute:

        ' 将任何由执行查询引起的错误通知用户。
        If Errors.Count > 0 Then
           For Each errLoop In Errors
              MsgBox "Error number: " & errLoop.Number & vbCr & _
                 errLoop.Description
           Next errLoop
        End If
       
        Resume Next

      End Sub

      Public Sub PrintOutput(rstTemp As ADODB.Recordset)

        ' 枚举 Recordset。
        Do While Not rstTemp.EOF
           Debug.Print "  " & rstTemp!Title & _
              ", " & rstTemp!Type
           rstTemp.MoveNext
        Loop

      End Sub


     

    zdingyun V2 | 工程师 向TA咨询

    擅长: IT

    其他回答


    展开全文
  • VB.NET 同 Console 程序交互的方法

    千次阅读 2016-11-24 09:04:36
    ''' 经实测,大于这个值在实时交互字符回显会产生可以察觉的延迟,给用户带来不愉感 ''' ''' Public Class CPLINK #Region "WINAPI定义" Private Class WINAPI (System.Runtime....
    ''' <summary>
    ''' 使用 .NET 自带的 Process 类可以启动外部 Console 程序并获取其输出,
    ''' 但 Process 类需要在外部程序结束后,才一次性返回外部程序的输出。
    ''' 
    ''' 如果想实现同外部程序的交互,Process 类无法满足要求,唯有采取自行
    ''' 使用 WINAPI 创建进程并关联自己管道的方法才能逐字符获取程序输出。
    ''' </summary>
    ''' <remarks>
    ''' 
    ''' 1 内部私有类 WINAPI 仅声明了所需的函数和结构及常数,并非完整 WINAPI
    '''   里面的数据类型需要自己定义一下,例如 Zero、LPTSTR 要定义成 Int32
    '''   相当于给系统内置的数据类型取个别名,在项目属性的“引用”页添加
    ''' 
    ''' 
    ''' 2 使用指南
    ''' 
    ''' 2.1 首先需要 objname = New CPLINK( _in_exepath, _in_opt_encoding) 创建一个对象实例
    ''' 
    ''' 2.1.1 参数 exepath 必须是完整的绝对路径,必须是 Console 程序
    ''' 
    ''' 2.1.2 参数 encoding 可选,是同外部程序交互时使用的编码,如果省略则为 UTF8
    ''' 
    ''' 2.2 可以用 PlinkStart(命令行字符串) 启动程序
    '''     并通过公共成员 CStdout, CStderr As StreamReader 读取外部程序的输出
    '''     并通过公共成员 CStdin As StreamWriter 发送内容给外部程序
    ''' 
    ''' 2.3 可以用 PlinkStartWithEvents(命令行字符串) 启动程序
    '''     然后侦听事件 E_PlinkOutRecieved(data As String, channel As Integer, iscompleteline As Boolean) 获得输出
    ''' 
    ''' 2.3.1 事件参数 data 是不含回车换行的一行文本
    ''' 
    ''' 2.3.2 事件参数 channel 为数字:1 表示来自于外部程序 stdout 的输出;2 表示来自 stderr 的输出
    ''' 
    ''' 2.3.3 事件参数 iscompleteline 为 True 表示因为收到了回车换行符而输出数据行,
    '''       为 False 表示是因读取超时而输出已收到的数据;
    '''       超时的具体值可以用公共成员 ReadTimeout_ms 来设置,缺省值是 75 毫秒;
    '''       经实测,大于这个值在实时交互中字符回显会产生可以察觉的延迟,给用户带来不愉感
    ''' 
    ''' </remarks>
    
    
    Public Class CPLINK
    #Region "WINAPI定义"
        Private Class WINAPI
            <System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)> _
            Private Structure STARTUPINFO
                Dim cb As DWORD
                Dim lpReserved As LPTSTR
                Dim lpDesktop As LPTSTR
                Dim lpTitle As LPTSTR
                Dim dwX As DWORD
                Dim dwY As DWORD
                Dim dwXSize As DWORD
                Dim dwYSize As DWORD
                Dim dwXCountChars As DWORD
                Dim dwYCountChars As DWORD
                Dim dwFillAttribute As DWORD
                Dim dwFlags As DWORD
                Dim wShowWindow As WORD
                Dim cbReserved2 As WORD
                Dim lpReserved2 As LPBYTE
                Dim hStdInput As HANDLE
                Dim hStdOutput As HANDLE
                Dim hStdError As HANDLE
            End Structure
    
            <System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)> _
            Private Structure PROCESS_INFORMATION
                Dim hProcess As HANDLE
                Dim hThread As HANDLE
                Dim dwProcessId As DWORD
                Dim dwThreadId As DWORD
            End Structure
    
            Private Declare Unicode Function _CreateProcess Lib "Kernel32.dll" Alias "CreateProcessW" (ByVal _in_ApplicationName As String, ByVal _inout_CommandLine As String, ByVal _opt_lpProcessAttributes As Zero, ByVal _opt_lpThreadAttributes As Zero, ByVal _in_InheritHandles As BOOL, ByVal _in_CreationFlags As DWORD, ByVal _opt_lpEnvironment As Zero, ByVal _opt_lpCurrentDirectory As Zero, ByRef _in_StartupInfo As STARTUPINFO, ByRef _out_ProcessInformation As PROCESS_INFORMATION) As BOOL
            Private Declare Auto Function _GetLastError Lib "Kernel32.dll" Alias "GetLastError" () As DWORD
    
            Private Const STARTF_USESTDHANDLES As DWORD = &H100
            Private Const CREATE_NO_WINDOW As DWORD = &H8000000
            Private Const CREATE_NEW_CONSOLE As DWORD = &H10
            Private Const [TRUE] As DWORD = 1
    
            Public Shared Function CreateProcess(AppPath As String, Arguements As String, hStdin As Microsoft.Win32.SafeHandles.SafePipeHandle, hStdout As Microsoft.Win32.SafeHandles.SafePipeHandle, hStderr As Microsoft.Win32.SafeHandles.SafePipeHandle) As Integer
                Dim si As New STARTUPINFO
                Dim pi As New PROCESS_INFORMATION
                si.cb = Len(si)
    
    #If 不用特别调试 = True Then
                si.hStdInput = 0 ' hStdin.DangerousGetHandle
                si.hStdOutput = hStdout.DangerousGetHandle
                si.hStdError = hStderr.DangerousGetHandle
                si.dwFlags = STARTF_USESTDHANDLES
                If 0 = _CreateProcess(AppPath, "appname.exe " & Arguements, 0, 0, [TRUE], CREATE_NEW_CONSOLE, 0, 0, si, pi) Then
    #Else
                si.hStdInput = hStdin.DangerousGetHandle
                si.hStdOutput = hStdout.DangerousGetHandle
                si.hStdError = hStderr.DangerousGetHandle
                si.dwFlags = STARTF_USESTDHANDLES
                If 0 = _CreateProcess(AppPath, "plink.exe " & Arguements, 0, 0, [TRUE], CREATE_NO_WINDOW, 0, 0, si, pi) Then
    #End If
                    Dim errcode As Integer = _GetLastError()
                    MsgBox("CreateProcess failed and lasterror code is: " & errcode)
                    Return 0
                Else
                    Return pi.dwProcessId
                End If
            End Function
    
        End Class
    #End Region
    
    #Region "工作区"
        Private plinkPath As String, plinkEncoding As System.Text.Encoding
        Private plnkCStdin, plnkCStdout, plnkCStderr As System.IO.Pipes.AnonymousPipeServerStream
        Private plnkProcessID As Integer, thRdCStdout, thRdCstderr As System.Threading.Thread
        Private rtaa(2) As ReadThreadArgs '管道专读线程参数数组(0 to 2),但0不用,因为 0|1|2 在习惯上代表 stdin|stdout|stderr。
    
        Public CStdin As System.IO.StreamWriter, CStdout, CStderr As System.IO.StreamReader
        Public ReadTimeout_ms As Integer = 75
    
        Private Event E_CharRecieved(ch As Char, channel As Integer) '处理字符到达的内部事件
        Public Event E_PlinkOutRecieved(data As String, channel As Integer, iscompleteline As Boolean)
    
        Private Structure ReadThreadArgs
            Dim sr As System.IO.StreamReader
            Dim channel As Integer
            Dim strb As System.Text.StringBuilder
            Dim rdTimer As System.Timers.Timer
        End Structure
        Private Sub ReadThreadMain(rta As ReadThreadArgs)
            Dim ch As Char
            Do
                Try
                    ch = ChrW(rta.sr.Read())
                    RaiseEvent E_CharRecieved(ch, rta.channel)
                Catch ex As Exception
                    Exit Do
                End Try
            Loop
        End Sub
        Public Function PlinkStartWithEvents(argline As String) As Boolean
            If Not PlinkStart(argline) Then Return False
    
            thRdCstderr = New System.Threading.Thread(AddressOf ReadThreadMain)
            thRdCStdout = New System.Threading.Thread(AddressOf ReadThreadMain)
            thRdCstderr.IsBackground = True
            thRdCStdout.IsBackground = True
            rtaa(2) = New ReadThreadArgs With {.sr = CStderr, .channel = 2, .strb = New System.Text.StringBuilder, .rdTimer = New System.Timers.Timer With {.Interval = ReadTimeout_ms}}
            rtaa(1) = New ReadThreadArgs With {.sr = CStdout, .channel = 1, .strb = New System.Text.StringBuilder, .rdTimer = New System.Timers.Timer With {.Interval = ReadTimeout_ms}}
    
            AddHandler rtaa(2).rdTimer.Elapsed, AddressOf OnTimeOut_channel2
            AddHandler rtaa(1).rdTimer.Elapsed, AddressOf OnTimeOut_channel1
    
            thRdCstderr.Start(rtaa(2))
            thRdCStdout.Start(rtaa(1))
            Return True
        End Function
        Private Sub OnTimeOut_channel2(sender As Object, e As System.Timers.ElapsedEventArgs)
            Call WhenTimeOut(2)
        End Sub
        Private Sub OnTimeOut_channel1(sender As Object, e As System.Timers.ElapsedEventArgs)
            Call WhenTimeOut(1)
        End Sub
        Private Sub WhenTimeOut(channel As Integer)
            With rtaa(channel)
                .rdTimer.Enabled = False
                If .strb.Length > 0 Then
                    RaiseEvent E_PlinkOutRecieved(.strb.ToString, channel, False)
                    .strb.Clear()
                End If
            End With
        End Sub
        Private Sub OnCharRecieved(ch As Char, channel As Integer) Handles Me.E_CharRecieved
            Dim chCode As Integer = AscW(ch)
            Dim te As Boolean = True
            With rtaa(channel)
                .rdTimer.Enabled = False
    
                Select Case chCode
                    Case 13
                        '.strb.Append("\x0D")
                    Case 10
                        '.strb.Append("\x0A")
                        RaiseEvent E_PlinkOutRecieved(.strb.ToString, channel, True)
                        .strb.Clear()
                        te = False
                    Case &H1 To &HF
                        .strb.Append("\x0" & Hex(chCode))
                    Case &H10 To &H1F, &H7F
                        .strb.Append("\x" & Hex(chCode))
                    Case Else
                        .strb.Append(ch)
                End Select
                .rdTimer.Enabled = te
            End With
        End Sub
    
        Public Function PlinkStart(argline As String) As Boolean
            Try
                plnkCStderr = New System.IO.Pipes.AnonymousPipeServerStream(IO.Pipes.PipeDirection.In, IO.HandleInheritability.Inheritable)
                plnkCStdout = New System.IO.Pipes.AnonymousPipeServerStream(IO.Pipes.PipeDirection.In, IO.HandleInheritability.Inheritable)
                plnkCStdin = New System.IO.Pipes.AnonymousPipeServerStream(IO.Pipes.PipeDirection.Out, IO.HandleInheritability.Inheritable)
    
                CStderr = New System.IO.StreamReader(plnkCStderr, plinkEncoding)
                CStdout = New System.IO.StreamReader(plnkCStdout, plinkEncoding)
                CStdin = New System.IO.StreamWriter(plnkCStdin, plinkEncoding) : CStdin.AutoFlush = True
    
                plnkProcessID = WINAPI.CreateProcess(plinkPath, argline, plnkCStdin.ClientSafePipeHandle, plnkCStdout.ClientSafePipeHandle, plnkCStderr.ClientSafePipeHandle)
    
                Return CBool(plnkProcessID)
            Catch ex As Exception
                MsgBox("EXCEPTION@CPLINK::Start: " & ex.Message)
                Return False
            End Try
        End Function
        Public Sub PlinkEnd()
            Try
                Dim pp As Process = System.Diagnostics.Process.GetProcessById(plnkProcessID)
                pp.Kill()
            Catch ex As Exception
            End Try
            Try
                CStderr.Close()
                CStdin.Close()
                CStdout.Close()
            Catch ex As Exception
            End Try
            Try
                plnkCStderr.Close()
                plnkCStdin.Close()
                plnkCStdout.Close()
            Catch ex As Exception
            End Try
        End Sub
    
        Sub New(in_plinkpath As String, Optional in_encoding As System.Text.Encoding = Nothing)
            If System.IO.File.Exists(in_plinkpath) Then
                plinkPath = in_plinkpath
                If in_encoding Is Nothing Then
                    plinkEncoding = System.Text.Encoding.UTF8
                Else
                    plinkEncoding = in_encoding
                End If
            Else
                Throw New Exception("FAILED@CPLINK::New: 指定的文件【" & in_plinkpath & "】不存在")
            End If
        End Sub
    
        Protected Overrides Sub Finalize()
            MyBase.Finalize()
            Me.PlinkEnd()
        End Sub
    
    #End Region
    
    End Class
    
    展开全文
  • (一)打开和关闭文件 ...Open pathname For [Input |Output |Append] As [#]filenumber [Len = buffersize]  说明:  (1)参数pathname 表示要打开的文件名,文件名可以包含有驱动器和目录

    (一)打开和关闭文件
         1、顺序文件

         打开顺序文件,我们可以使用Open语句。它的格式如下:

    Open pathname For [Input |Output |Append] As [#]filenumber [Len = buffersize]

         说明:

         (1)参数pathname 表示要打开的文件名,文件名可以包含有驱动器和目录

         (2)Input Output 和Append用于设置顺序文件的打开方式。其中,Input表示从打开的文件中读取数据。以这种方式打开文件时,文件必须存在,否则会产生错误。Output表示向打开的文件中写入数据。以这种方式打开文件时,文件中原有的数据将被覆盖,新的数据将从文件开始写入。如果文件不存在,则创建一个新文件。Append表示向打开的文件中添加数据。以这种方式打开时,文件中原有的数据将被保留,新的数据将从文件为开始添加。如果文件不存在,则创建一个新文件。

         (3)As[#]filenumber 子句用于为打开的文件指定文件号.对文件进行读写操作时,要用文件号表示该文件.文件号是介于1~511之间的整数,既可以是数字,又可以是变量.也可以省略不用.

         (4)当在文件与程序之间拷贝数据时,Len=buffersize子句指定缓冲区的字符数.

         例如:

    Open App.Path + "\test.dat" For Output As 1

    Open App.Path + "\test.dat" For Output As 1

         这两句代码在当前应用程序所在目录下创建了一个名为test.dat的文本文件,分配文件号为1.

    Open App.Path + "\test.dat" For Input As [#]filenumber

         这条语句是从文本文件中读取数据.

    Open App.Path + "\test.dat" For Append As [#]filenumber

         这条语句则是像文本文件中添加数据

         2、随机文件

         操作随机文件之前,首先必须定义用于保存数据项的记录类型.该记录是用户自定义数据类型,他们是随机文件中存储数据的基本结构.例如:

    Type Student
       No As Integer
       Name As String * 20
       age As Integer
    End Type

    Dim Stud As Student ‘定义一个可以存放学生材料的变量

         随机文件中,所有的数据都将保存到若干个结构为Student类型的记录中, 而从随机文件中读出的数据则可以存放到变量Stud中.

         之后我们就可以打开并读写文件了.下面是打开随机文件的语法格式:

    Open filename For Random as [#]filenumber Len = Reclength

         说明:

         (1)参数filename 和filenumber 分别表示文件名或文件号.

         (2)关键字Random 表示打开的是随机文件

         (3)Len子句用于设置记录长度,长度由参数Reclength指定.Reclength的值必须大于0,而且必须与定义的记录结构的长度一致.计算记录长度的方法是将记录结构中每个元素的长度相加.例如前面声明的Student的长度应该是2+20+2=24字节.

         打开一个记录类型为Student 的随机文件的方法是:

    Open "c:\Student.txt " For Random As #1 Len = 25

         3、二进制文件

         打开二进制文件的语法格式如下:

    Open pathname For Binary As [#]filenumber

         说明:

         (1) 参数filename 和filenumber 分别表示文件名或文件号.

         (2)关键字Binary 表示打开的是二进制文件

         (3)对于二进制文件,不能指定字节长度.每个打开的二进制文件都有一个自己的指针,文件指针是一个数字值,指向下一次读写操作的文件中的位置.二进制文件中的每个”位置”对应一个数据字节,因此,有n个字节的文件,就有1到n个位置.

         我们可以用Seek()函数返回当前的文件指针位置(即下一个要读写的字节 );用Loc()函数返回上一次读写的字节位置,除非用Seek语句移动了指针,Loc()返回值总比Seek()的小1.我们来看下面的例子:

    Open “student.txt” for Binary as #1

         该语句用二进制的方式打开了student.txt文件.

         (二)读文件

         1、顺序文件

         顺序文件的读取有三种方式:

         (1)Line Input # 语句

         该语句从打开的顺序文件中读取一行数据。这里的一行指的是从当前指针位置开始到回车符或回车换行符之间的所有数据。Line Input # 语句的语法格式如下:

    Line Input # 文件号,变量号

         说明:“文件号”是打开文件时所用的文件号;“变量号”使用来存放读出数据的一个或多个变量,如果有多个变量,中间用空格分割开。Input# 语句为参数列表中的每一个变量读取文件的一个域,并将读出的域存入变量中。该语句只能顺序的从第一个域开始,直到读取想要的域。

         请看下面代码:

    Dim strLine As String

    Open "c:\vb\test.txt" For Input As #1

    Do Until EOF(1)
       Line Input #1, strLine
       text1.Text = text1.Text + strLine + Chr(13) + Chr(10)
    Loop

    Close #1

         此段代码逐行读取一个文件到文本框中。

         (2)Input函数

         此函数可以从顺序文件中一次读取指定长度的字符串。具体地说,就是从文件的当前位置开始,读取指定个数的字符,然后将他们返回。Input函数可以读取包括换行符,回车符,空格符等在内的各种字符。下面是它的语法格式:

         变量 = Input(串长度,文件号)

         例如,要从一个打开文件中读取12个字符并复制到变量file中,我们可以这样写:

    file = Input(12,filenum)

         如果要将整个文件复制到变量,请使用InputB函数将字节从文件复制到变量。由于InputB函数返回一个ASCII字符串,因此,必须用StrCopy函数将ASCII字符串转换为Unicode字符串。代码如下:

    file = StrCopy (Input (LOF(filenanum),filenum),vbUnicode)

         (3)Input # 语句

         Input #语句可以从文件中同时向多个变量内读入数据,而且读入的数据可以是不同类型的。
      
         下面使它的语法格式:

    Input # 文件号,变量列表

         例如,我们要在文件student.txt中写入数据,下面是代码:

    Open "student.txt" For Output As #filenum

    Write #filenum, "张三", "初一年级", 14
    Write #filenum, "李四", "职业高中", 18

    Dim name As String, nianji As String, age As Integer

    Dim name1 As String, nianji1 As String, age1 As Integer
    Open "student.txt" For Input As #filenum
    Input #filenum, name, nianji, age
    Input #filenum, name1, nianji1, age1
    Close #filenum

         执行结果:

    name=”张三” ,nianji = “初一年级” ,age =14

    name=”李四” ,nianji = “职业高中” ,age =18

         2、随机文件

         读取随机文件是可以使用Get # 语句,数据从文件的一个指定记录中读出后,存入一个用户自定义的变量中.

         语法格式: Get # FileNum ,[RecNum],UserType

         说明:

         (1)FileNum 是要打开的文件号;RecNum是要读取的记录号,若省略,则读取下一个记录

         (2)UserType 是一个用来存放读出数据的用户自定义的数据类型变量.

         下面是一个例子:

    Get # 1,5,Student

         该语句读取文件号为1的文件中的第5条记录.

         3、二进制文件

         读写二进制文件的方法和读写随机文件的方法基本相同,下面是相关的语句格式及其说明:

         格式: Get [#]fileNumber ,[Pos], Var

         功能: 用二进制方式,从文件的中指定的位置开始读取,所给变量长度的数据

         说明:

         (1)FileNumber是以二进制方式打开的文件号.

         (2)Pos用来指定读写操作发生时的字节位置,若省略,则使用当前文件指针位置.

         (3)Var是用来存放读出的数据的变量.该语句会自动根据var变量包含的字节长度读取适当的文件,如果Var是一个可变长度的字符串变量,则传送的字节数等于Var中目前的字节数.对于文件长度的判断我们可以使用Lof()函数,Eof()函数检查文件的结尾位置.

         下面的代码复制studert.txt文件到student1.txt文件中

    Dim ar As String * 1, i As Integer
    Open "c:\student.txt" For Binary As #1
    Open "c:\student2.txt" For Binary As #2
    For i = 1 To LOF(1)
       Get #1, , ar
       Put #2, , ar
    Next i

    Close #1, #2 


         (三)写文件

         1、 顺序文件

         写顺序文件我们可以用Write # 和Print #语句向一个已经打开的文件中写入数据.

         下面是他们的格式和说明:

         Print # 的语法格式:

         Print # 文件号,变量列表

         例如,将文本框中的文本写到文件中,代码如下:

    Open "file.txt" For Output As #filenum

    Input #filenum, text1.text

         Write # 语句的语法格式:

    Write # 文件号,变量列表

         说明:用Write # 语句写入的信息便于以后用Input #语句来读取数据,因为Write #语句自动将写入到文件中的信息用逗号分开,并为字符串数据加上双引号.例如:

    Open "student.txt" For Output As #filenum

    Write #filenum, "张三", "初一年级", 14
    Write #filenum, "李四", "职业高中", 18

         2、 随机文件

         向随机文件中写入数据,使用Put   #语句.语法格式如下:

    Put [#] FileNum ,[RecNum],UserType

         说明:

         (1) FileNum 是要打开的文件号;RecNum是要写入的记录号,若省略,则再上一次用Get 和Put语句所读写过的记录的后一条记录中写入,如果没有执行过Get 和Put语句,就从第一条记录开始

         (2)UserType 是包含要写入数据的用户自定义的数据类型变量.例如:我们向前面的student.txt文件中的第5个记录写入数据,可用这些语句:

    stud.No = 0301
    stud.Name = “王武”
    stud.Age =20
    Put #1 ,5,stud

         如果要插入的数据不只一两条的话,首先要确定文件和每条记录的长度,这样就可以计算出文件中究竟有多少条记录.我们可以用Lof()函数返回文件的长度,Len()函数返回每个记录的长度,计算文件中的记录个数可以用文件的长度除以给个记录的长度.示例如下:

    Nextrec= (Lof(1)\Len(UserType))+1

    Put #1,Nextrec,UserType

         3、二进制文件

         下面是以二进制方式写入文件的语句格式及其说明:

         格式:

    Put [#]fileNumber ,[Pos], Var

         功能: 用二进制方式,从文件的中指定的位置开始写入,所给变量长度的数据

         说明:

         (1)FileNumber是以二进制方式打开的文件号.

         (2)Pos用来指定写操作发生时的字节位置,若省略,则使用当前文件指针位置.

         (3)Var是用来存放写入的数据的变量.该语句会自动根据var变量包含的字节长度写入文件,如果Var是一个可变长度的字符串变量,则传送的字节数等于Var中目前的字节数  

    展开全文
  • VB中 MSComm串口操作控件使用详解

    万次阅读 2011-08-17 15:19:35
    MSComm控件使用详解  MSComm 控件通过串行端口传输和接收数据,为应用程序提供...MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数, 而且在VC、VB、Delphi等语言均可使用。 Micro
  • 如题 MSCoom1. Output = &H51 '发送十六进制51 这种格式错误,请问怎样 正确给MSCoom1. Output 赋值 发送十六进制51
  • VB中 MSComm控件使用详解

    万次阅读 2015-06-16 11:24:48
    MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言均可使用。   Microsoft Communications   Control(以下简称MSComm)是Microsoft公司提供的简化...
  • VB检测获取声卡硬件和驱动信息,可获得声卡的支持的输出功能列表,单击按钮测试声卡,显示声卡的各项信息,最终测得的声卡硬件信息如下:  产品名称:Realtek HD Audio output  产品 Id:100  驱动程序 Id:1...
  • VB中CommonDialog示例

    千次阅读 2013-12-08 19:44:16
    VB中CommonDialog示例 从project->components,选中microsoft common dialog control 6.0,点击“确定”,会有Commondialog按钮出现在控件栏,然后拖一个到窗体,用其默认名Commondialog1。 在本程序实现...
  • vb菜单联动

    2015-08-22 23:40:52
    vb菜单联动Private Sub close_Click() On Error Resume Next '循环语句 For Each main In Forms If main.MDIChild = True Then Unload main End If Next Dim FNum As Integer Dim strfilename As String ...
  • vb3.0 升级vb6.0 I'm currently working for a company where I have to upgrade over 50 VB6 programs to VB.NET 2008. So far I'm about half way through, and I've learned quite a few tric...
  • VB中如何发送一个浮点数,例如 -7.738263E-09 如何通过串口(mscomm控件发送,在另一端使用单片机接收。我知道在VC只要使用 union {  char temp[4];  float num; }at; at.num = -7.738263E-09; 利用  ...
  • VB 6.0Byte数组和String转换

    千次阅读 2012-04-07 16:09:09
    VB里,Byte数组和String可以互相赋值,利用这个特性处理字符串非常方便。 如果是处理大量文本,以下用法应该熟悉。 字符串与Byte数组互相赋值: tBytes()=tString tString=tBytes() 需要注意的是...
  • VB中串口通讯的实现

    千次阅读 2012-03-13 16:46:33
    一、概述   串口通讯作为一种古老而又灵活的... 实际上,只要我们借助相关ActiveX控件的帮助,即使是在底层操作一向不被人看好的VB中,一样能够实现串口通 讯,甚至其实现方法和C、汇编相比,要更加快捷方便。下
  • VB中调用DOS命令

    千次阅读 2009-08-13 11:04:00
    VB中调用DOS命令,如何得知DOS命令是否已经执行完毕_____________________________________________Set wshl = CreateObject("wscript.shell")wshl.Run "ping 9zp.com", 1, True true代表等待完成,1代表显示运行...
  • VB扫雷游戏完整教程及代码

    千次阅读 2020-09-07 18:12:40
    我做的这个扫雷基本上继承了windows扫雷的玩法。通过菜单栏的新游戏,选择一个游戏难度,即可进入扫雷界面。单击任意一个按钮,就开始了游戏。 具体的规则和逻辑是: 1,鼠标左击则弹开一个雷区,如果是炸弹,则...
  • VB6.0 取得windows 临时目录 temp Private Sub Form_Load() Dim S As String, S1 As String S = Environ(“temp”) Open S & “\A.txt” For Output As #1 Print #1, “windows 临时目录是:” & s Close #1...
  • vb操作EXCEL

    2012-09-07 23:40:44
    利用vb6.0 实现对EXCEL进行打开、写入、储存、关闭,可以应用在数据采集程序,实现连续储存采集数据;应用:首先VB应该引用EXCEL类型,然后在EXCEL之VB中建立类模块,然后在类模块输入如下程序,并储存,以便...
  • 前言:VB串口通信的方法一般有两种:一是通过Windows的通信API进行通信;另一种是通过VB的标准控件MSComm来实现。这篇文章要讲的是上位机如何通过VB的串口控件MSComm和下位机进行串口通信的过程。 以下是给VB初学者...
  • vb输入输出

    千次阅读 2016-06-29 10:45:50
     Input——顺序输入(输入给自己,从txt取出) Output——顺序输出(输出到txt)  Random——随机存取方式 (3)文件号(或称文件缓冲区) (4)存取类型:访问文件的类型,为Read(只读)、Write(只写)、Read...
  • 摘要:VB源码,系统相关,单片机控制 松下空调电总版子机测试程序,测试之前请选择串行端口,本程序使用命令按钮控件,关闭通信端口,结束系统;使用Output属性将用户欲发送的字符串送出;MSComm的OnComm事件程序,由...
  • vb 的MD5加密

    千次阅读 2013-04-11 08:55:37
    web项目方法 : System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile("aaaa", "MD5") 查看文档方法: Public Shared Function HashPasswordForStoringInConfigFile(ByVal password As...
  • vb中文件的打开、文件的关闭

    千次阅读 2014-10-13 10:00:09
    关闭的操作主要是将缓冲区的数据写入文件,并且取消文件号与文件的关联。 除了Close外,当程序运行结束时,也会关闭所有的数据文件。 举例: Close #1 Close #2,#3   本文来自...
  • vb.netsplit的疑问

    千次阅读 2012-07-29 21:09:11
    ' The example displays the following output to the console: ' This ' is ' a ' list ' of ' words ' with ' a ' bit ' of ' punctuation ' and ' a ' tab ' character 两个问题: 1、dim a( ) as ...
  • 串口通信MSComm1输出遇到小问题MSComm1.Output = a 提示报错, 运行时错误‘380’无效属性值 经过调整后,对发送字节进行数组定义,问题解决,程序如下...
  • .net使用存储过程output值和返回值

    千次阅读 2009-12-29 23:27:00
    数据库使用output值和return值: ---------------------------------------------------------数获存储过程OUTPUT参数和返回值获取------------------------------------------------------- CREATE ...
  • VB中使用inet控件

    千次阅读 2013-06-24 13:52:39
     环境VB6+WINXP打开VB6,新建工程添加部件Microsoft Internet Transfer Controls.在form添加2个按钮,2个文本框和Inet控件代码如下: Option Explicit'这段代码使用了GetHeader来返回页面信息,比较准确一些'可以...
  • VB.NET和VB6.0有什么区别?

    千次阅读 热门讨论 2015-10-18 17:26:46
    Visual Basic .NET是Microsoft Visual Studio .NET套件主要组成部分之一。.NET版本的Visual Basic增加了更多特性,而且演化为完全面向对象(就像C++)的编程语言。本文将介绍VB.NET的新特性,并比较VB6.0/VB.NET...
  • VB简体转繁体

    2015-07-27 00:07:30
    Open strPath & TmpFile & strFileNameEx For Output As #1 Print #1, StrGBToBIG5(UEFLoadTextFile(strPath & strFileName & strFileNameEx, UEF_Auto)) Close #1 Call Fso.DeleteFile(strPath & strFileName ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,831
精华内容 6,732
关键字:

vb中output