注册 登录
编程论坛 VB6论坛

VB中怎样将外部数据(如:*.txt,excel)导入控件text1中做查询条件!

豆豆17373 发布于 2012-11-02 17:47, 2935 次点击
如题。如:*.txt 中有两行内容,第一行“张三”,第二行“李四” 怎样导入到查询窗体text1中,点查询按钮后做2次(或批量)查询,读取到张三查询从ACCESS数据库的个人信息结果输入到显示控件的第一行,读取到李三查询从ACCESS数据库的个人信息结果输入到显示控件的第二行.... 要是文本文件中有N行呢?需要自动循环做条件查询。 假设:文本文件为 Text.txt
-----------------------

Private Sub Command1_Click()

Dim str1 As String
Text1 = ""
CommonDialog1.ShowOpen
Dim strTest As String, lstr As String
Dim fname As String, fnum As Integer
Dim arrList(1000) as string
  fname = "......\Text.txt"  'Text.txt的绝对路径
  fnum = FreeFile               '获取文件号
 Open fname For Input As #fnum 打开对话框后点取消这行红色 提示路径未找到
  Do Until EOF(fnum)
    Line Input #fnum, lstr
    Text1.Text = Text1 & strTest & lstr & vbCrLf
  Loop
  Close fnum
End Sub
------------------------------------
不对吖。

[ 本帖最后由 豆豆17373 于 2012-11-3 08:34 编辑 ]
20 回复
#2
Artless2012-11-02 23:29
以下是引用豆豆17373在2012-11-2 17:47:24的发言:

如题。如:*.txt 中有两行内容,第一行“张三”,第二行“李四” 怎样导入到查询窗体text1中,点查询按钮后做2次(或批量)查询,读取到张三查询从ACCESS数据库的个人信息结果输入到显示控件的第一行,读取到李三查询从ACCESS数据库的个人信息结果输入到显示控件的第二行.... 要是文本文件中有N行呢?需要自动循环做条件查询。 假设:文本文件为 Text.txt
-----------------------

Private Sub Command1_Click()
CommonDialog1.ShowOpen
Dim str1 As String
Text1 = ""

Dim strTest As String, lstr As String
Dim fname As String, fnum As Integer
Dim arrList(1000) as string
  fname = "......\Text.txt"  'Text.txt的绝对路径
  fnum = FreeFile               '获取文件号
  Open fname For Input As #fnum
  Do Until EOF(fnum)
    Line Input #fnum, lstr
    Text1.Text = Text1 & strTest & lstr & vbCrLf
  Loop
  Close fnum
End Sub
------------------------------------
不对吖。

Dim strTest As String, lstr As String
Dim fname As String, fnum As Integer
Dim arrList(1000) as string
  fname = "......\Text.txt"  'Text.txt的绝对路径
  fnum = FreeFile               '获取文件号
Dim ary() As String
dim As Integer
i = 1
Open "" For Input As #1
Do While Not EOF(1)
ReDim Preserve ary(i)
Line Input #1, b
ary(i) = b
i = i + 1
Loop
For i = 1 To UBound(ary())
Print ary(i)
Next
  Close fnum
End Sub

那里不对?
#3
豆豆173732012-11-03 08:14
以下是引用Artless在2012-11-2 23:29:43的发言:


那里不对?


Private Sub Command1_Click()

Dim str1 As String
Text1 = ""
CommonDialog1.ShowOpen
Dim strTest As String, lstr As String
Dim fname As String, fnum As Integer
Dim arrList(1000) as string
  fname = "......\Text.txt"  'Text.txt的绝对路径
  fnum = FreeFile               '获取文件号
Open fname For Input As #fnum 打开对话框后点取消这行红色 提示路径未找到
  Do Until EOF(fnum)
    Line Input #fnum, lstr
    Text1.Text = Text1 & strTest & lstr & vbCrLf
  Loop
  Close fnum
End Sub

打开对话框后点取消这行红色 提示路径未找到

[ 本帖最后由 豆豆17373 于 2012-11-3 08:34 编辑 ]
#4
Artless2012-11-03 10:50
fname = "......\Text.txt"?
#5
豆豆173732012-11-03 11:09
以下是引用Artless在2012-11-3 10:50:49的发言:

fname = "......\Text.txt"?


老师您好!。刚学 还需请教。我重写了下。
----------------------
On Error GoTo ErrHandler
'设置过滤器。
CommonDialog1.Filter = "Text _Files (*.txt)|*.txt"
'指定缺省过滤器。
CommonDialog1.FilterIndex = 2
'显示“打开”对话框。
CommonDialog1.ShowOpen
'调用打开文件的过程。
Open "f:\d.txt" For Input As #1
RichTextBox1.Text = StrConv(InputB$(LOF(1), 1), vbUnicode)
Close #1

 上面红色部分如果不知道具体地址,怎么写(只会写具体路径简单的,对话框老写不好出错就是用上面打开的对话框选文本文件,求助?我用了StrConv函数将文件的控制字符串数据和Unicode码之间进行转换,从而达到打开文件的目的。可打开任意大小文件,


Exit Sub
ErrHandler:
'用户按“取消”按钮。
Exit Sub

[ 本帖最后由 豆豆17373 于 2012-11-3 11:10 编辑 ]
#6
Artless2012-11-03 11:16
#7
豆豆173732012-11-03 11:16
或者 打开对话框 获取绝对路径  把它用变量 Open "变量路径\*.txt" For Input As #1

可以 吗?求教老师
#8
Artless2012-11-03 11:18
#9
豆豆173732012-11-03 12:18
搞不好吖。 结合我的例子给出完整的代码吧。 老师
#10
Artless2012-11-03 12:29
#11
豆豆173732012-11-03 13:14
我把获取路径和文件名做好了,Text1.Text = 获取路径和文件名了

怎么把下面的。"f:\d.txt" 用 Text1.Text代替吖
Open "f:\d.txt" For Input As #1
RichTextBox1.Text = StrConv(InputB$(LOF(1), 1), vbUnicode)
Close #1
#12
豆豆173732012-11-03 13:16
Open " + Text1.Text + " For Input As #1
     RichTextBox2.Text = StrConv(InputB$(LOF(1), 1), vbUnicode)
Close #1

这样不行吗?
#13
豆豆173732012-11-03 13:17
Dim ePath As String, M As Integer
 Dim eName As String, N As Integer
CommonDialog1.Filter = "文本文件(*.txt)|*.txt|inp文件(*.inp)|*.inp|所有文件(*.*)|*.*"
  CommonDialog1.ShowOpen
  If CommonDialog1.FileName = "" Then Exit Sub
  ePath = Left(CommonDialog1.FileName, InStr(1, CommonDialog1.FileName, CommonDialog1.FileTitle) - 1)  'ePath 获取文件的路径
  eName = CommonDialog1.FileTitle   'eName 获取文件名字
  Text1.Text = CommonDialog1.FileName
#14
Artless2012-11-03 13:19
Open Text1.Text For Input As #1
#15
豆豆173732012-11-03 13:28
哦,是这样的语法吖。 我还加了个“+”号
#16
豆豆173732012-11-03 14:00
老师,您好!,现在想跟您学习下,如何 用数组循环 依次逐行读取文本文件中的内容赋值给一个变量 呢?
#17
豆豆173732012-11-03 15:06
Dim Str() As String '声明一个字符型数组
    Dim I As Long '声明一个长整型变量,下面读文件用到
   
    Open Text1.Text For Input As #1 '打开文件
   
    Do While Not EOF(1) '判断是否到了文件结尾
        ReDim Preserve Str(I) '给数组分配空间,
        
        Line Input #1, Str(I) '读取一行放入数组变量中
        
        I = I + 1 '判断读了多少行,再给数组分配空间
  MsgBox Str(I) 
  Loop '循环
   
    Close #1 '关闭文件

------------------
红色行下标越界! 求老师回答下吧 不知道哪里错了。

[ 本帖最后由 豆豆17373 于 2012-11-3 15:09 编辑 ]
#18
豆豆173732012-11-03 15:32
VB中读取文本内容用MsgBox显示 
#19
豆豆173732012-11-03 21:05
dim strLine as string
open Text1.text for input as #1

while not eof(1)

line input #1,strLine

msgbox strLine '显示每行

wend

close #1
#20
Artless2012-11-04 13:59
以下是引用豆豆17373在2012-11-3 15:06:41的发言:

Dim Str() As String '声明一个字符型数组
    Dim I As Long '声明一个长整型变量,下面读文件用到
   
    Open Text1.Text For Input As #1 '打开文件
   
    Do While Not EOF(1) '判断是否到了文件结尾
        ReDim Preserve Str(I) '给数组分配空间,
        
        Line Input #1, Str(I) '读取一行放入数组变量中
        
        I = I + 1 '判断读了多少行,再给数组分配空间
  MsgBox Str(I) 
  Loop '循环
   
    Close #1 '关闭文件

------------------
红色行下标越界! 求老师回答下吧 不知道哪里错了。

   MsgBox Str(I) 
   I = I + 1 '判断读了多少行,再给数组分配空间
#21
豆豆173732012-11-04 14:40
以下是引用Artless在2012-11-4 13:59:40的发言:


   MsgBox Str(I) 
   I = I + 1 '判断读了多少行,再给数组分配空间

方二:
Open Text1.Text For Input As #1

While Not EOF(1)

   Line Input #1, strLine

  MsgBox  strLine  
Wend

Close #1
1