【VB题】使用自定义数据类型和动态数组实现:用户在文本框中输入,单击添加按钮,在右面的列表框中显示
使用自定义数据类型和动态数组实现如下功能:用户在文本框中输入学生的学号、姓名、所属系和年龄,单击添加按钮,在右面的列表框中显示出来【求问我的代码哪里错了TUT】明明用了r...
使用自定义数据类型和动态数组实现如下功能:用户在文本框中输入学生的学号、姓名、所属系和年龄,单击添加按钮,在右面的列表框中显示出来
【求问我的代码哪里错了TUT】明明用了redim preserve 为什么修改数组大小之后数据还是无法保留。希望能第一次输入的数据储存在a(1),第二次储存在a(2)
Private Type List ‘自定义数组
name As String
number As Integer
department As String
age As Integer
End Type
Private Sub Command1_Click()
Dim n%, i%
i = i + 1
Dim a() As List
ReDim Preserve a(1 To i)
a(i).number = Val(Text1.Text)
a(i).name = Text2.Text
a(i).department = Text3.Text
a(i).age = Val(Text4.Text)
List1.AddItem a(i).number & Space(6) & a(i).name & Space(6) & a(i).department & Space(7) & a(i).age
End Sub 展开
【求问我的代码哪里错了TUT】明明用了redim preserve 为什么修改数组大小之后数据还是无法保留。希望能第一次输入的数据储存在a(1),第二次储存在a(2)
Private Type List ‘自定义数组
name As String
number As Integer
department As String
age As Integer
End Type
Private Sub Command1_Click()
Dim n%, i%
i = i + 1
Dim a() As List
ReDim Preserve a(1 To i)
a(i).number = Val(Text1.Text)
a(i).name = Text2.Text
a(i).department = Text3.Text
a(i).age = Val(Text4.Text)
List1.AddItem a(i).number & Space(6) & a(i).name & Space(6) & a(i).department & Space(7) & a(i).age
End Sub 展开
3个回答
展开全部
Private Type UsrList ‘自定义数组(格式)
name As String
number As Integer
department As String
age As Integer
End Type
Dim Lst() as UsrLst '定义一个(数组)变量,代表自定义的Type格式
Private Sub Form_Load()
ReDim Lst(0) '这一组可以不用,也可以使用,关系到后续代码的数组Lbound运算
End Sub
Private Sub Command1_Click()
Dim n%, i%
i = UBound(Lst) + 1 '如果没有预置ReDim Lst(0) ,UBound(Lst)会提示出错
ReDim Preserve Lst(i)
Lst(i).number = int(Val(Text1.Text))
Lst(i).name = Cstr(Text2.Text)
Lst(i).department = Cstr(Text3.Text)
Lst(i).age = int(Val(Text4.Text))
List1.AddItem Lst(i).number & Space(6) & Lst(i).name & Space(6) & Lst(i).department & Space(7) & Lst(i).age
End Sub
name As String
number As Integer
department As String
age As Integer
End Type
Dim Lst() as UsrLst '定义一个(数组)变量,代表自定义的Type格式
Private Sub Form_Load()
ReDim Lst(0) '这一组可以不用,也可以使用,关系到后续代码的数组Lbound运算
End Sub
Private Sub Command1_Click()
Dim n%, i%
i = UBound(Lst) + 1 '如果没有预置ReDim Lst(0) ,UBound(Lst)会提示出错
ReDim Preserve Lst(i)
Lst(i).number = int(Val(Text1.Text))
Lst(i).name = Cstr(Text2.Text)
Lst(i).department = Cstr(Text3.Text)
Lst(i).age = int(Val(Text4.Text))
List1.AddItem Lst(i).number & Space(6) & Lst(i).name & Space(6) & Lst(i).department & Space(7) & Lst(i).age
End Sub
追问
Dim Lst() as UsrLst 用户定义类型未定义?
追答
Dim Lst() as UsrList
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
关键你把i%定义在Command1_Click() 过程内
因为i%是局部变量,你每次点Command1_Click时,i都是从0开始的。
所以 i%定义为全局变量或静态变量,让i能够保存上次的值,
这样达到保存前面的值了
第一种
Dim i%
Private Sub Command1_Click()
Dim n%
i = i + 1
Dim a() As List
ReDim Preserve a(1 To i)
a(i).number = Val(Text1.Text)
a(i).name = Text2.Text
a(i).department = Text3.Text
a(i).age = Val(Text4.Text)
第二种
Private Sub Command1_Click()
Dim n%
Static i%
i = i + 1
Dim a() As List
ReDim Preserve a(1 To i)
a(i).number = Val(Text1.Text)
a(i).name = Text2.Text
a(i).department = Text3.Text
a(i).age = Val(Text4.Text)
因为i%是局部变量,你每次点Command1_Click时,i都是从0开始的。
所以 i%定义为全局变量或静态变量,让i能够保存上次的值,
这样达到保存前面的值了
第一种
Dim i%
Private Sub Command1_Click()
Dim n%
i = i + 1
Dim a() As List
ReDim Preserve a(1 To i)
a(i).number = Val(Text1.Text)
a(i).name = Text2.Text
a(i).department = Text3.Text
a(i).age = Val(Text4.Text)
第二种
Private Sub Command1_Click()
Dim n%
Static i%
i = i + 1
Dim a() As List
ReDim Preserve a(1 To i)
a(i).number = Val(Text1.Text)
a(i).name = Text2.Text
a(i).department = Text3.Text
a(i).age = Val(Text4.Text)
追问
两种都是第二次输入之后a(1)永远是0?
追答
关键是看Text1.Text的内容了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议你去学数据库,比这个方法要好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询