社区
VB基础类 帖子详情 VB程序为什么不能正常运行 Misaya灬岳桦 2019-05-13 07:27:02 简单介绍一下这个程序下面是一个窗体的源代码
毕设差不多是照搬了一本书的一个程序 比较大 敲完书上的源代码后 各种修改后无报错(其实也就改了声明变量的访问权限 源代码是private 改成了public 不然一直报子程序或函数未定义)改了之后就不报了 下面代码只是一个部分 还有一部分全部是自定义的函数 我放到模块里面了 FORM1.Show 其实我还是不太懂为什么要这一步 因为我觉得没有用 按照设想 应该是一运行程序 会弹出InputBox 就如下面代码说的一样 然后一步一步来 也不用在窗体添加什么控件 (我是这么想的 ) 可是不报错运行 只出来一个FORM1的空白页面 并不会在往下运行 请大佬指点 各种搜也搜不出来 毕设比较着急 有偿我也是能接受的 主要太小白了 .....希望大佬帮帮忙
我的QQ是 957844622
下面代码是form2的全部代码和 模块里面的一个自定义函数的一部分 主要是太长了就没复制完 就这么多分...希望有大神帮忙...有偿.....
Private Sub Form_Load()
Form1.Show
FileName = InputBox("输入保存计算成果文件名")
FileName = App.Path & FileName
Open FileName For Output As #2
Inp '调用子程序调入数据
If g = "p" Then BB_17
f = 2 * (z - v) - 1: f1 = f + d0 + t0
ReDim c(f1, f1), b1(f), b2(f)
pq1: For i = 0 To f1: For j = 0 To f1: c(i, j) = 0: Next j: Next i
If g = "p" Then
ReDim l(f1)
For i = 0 To f1: l(i) = 0: Next i: ll = 0
End If
If m2 > 0 Then
For a = st + 1 To z
c1 = 0
For i = 0 To f: b2(i) = 0: Next i
p1 = q(a - st): q1 = q(a + 1 - st) - 1
For o = p1 To q1
If aa = "aal" Then
b = h1(o): m = 0
Else
BB_7
End If
bb = "l": cc = "n": BB_10: p = 1
If g = "p" Then
If r(o) < 0.01 Then e2 = t
e3 = t - e2 - r(o)
If e3 < -180 Then e3 = e3 + 360
e3 = e3 * 3600: ll = ll + e3 * e3: e1 = e1 + e3
End If
BB_13
For i = 0 To f: b2(i) = b2(i) + b1(i): Next i
If m > 0 And a < b Then BB_11: BB_13
Next o
cc = "n": p = -1 / (q1 - p1 + 1)
For i = 0 To f: b1(i) = b2(i): Next i
If g = "p" Then e3 = e1: ll = ll + p * e3 * e3
BB_13
Next a
End If
If aa = "aa1" Then
For a = 1 To a
For o = n(a - 1) To n(a) - 1
cc = "n": BB_7
If a < b Then BB_11: BB_13
Next o
Next a
End If
If t0 > 0 Then
cc = "y": bb = "1"
For i = 1 To t0
a = Fix(ha(i)): b = CInt((ha(i) - a) * 100): BB_10: p = 1
If g = "p" Then
e3 = t - a1(i)
If e3 < -180 Then e3 = e3 + 360
e3 = e3 * 3600
If v = 1 Then ll = ll + e3 * e3
End If
m = d0 + i: BB_13
Next i
End If
For i = 1 To f1
For j = i To f1
For k = 0 To i = 1
c(i, j) = c(i, j) - c(k, i) * c(k, j) / c(k, k)
Next k
Next j
Next i
For k = f1 To 0 Step -1
e1 = -1
For i = k To 0 Step -1
If i < k Then e1 = 0
For j = i To f1 - 1
If j + 1 < k Then
e2 = c(k, j + 1)
Else
e2 = c(j + 1, k)
End If
e1 = e1 + c(i, j + 1) * e2
Next j
c(k, i) = -c1 / c(i, i)
Next i
Next k
If g = "p" Then
For i = 0 To f1
e1 = 0
For j = 0 To f1
If i < j Then
e2 = c(j, i)
Else
e2 = c(i, j)
End If
e1 = e1 - e2 * l(j)
Next j
If i < -f Then
If (i + 2) / 2 - Int((i + 2) / 2) Then
x(i / 2 + 1 + v) = x(i / 2 + 1 + v) + e1 / 100
Else
y((i - 1) / 2 + 1 + v) = y((i - 1) / 2 + 1 + v) + e1 / 100
End If
End If
ll = ll + e1 * l(i)
Next i
If m2 = 0 Then m2 = z
e = m1 + m2 + t0 - 3 * z + 2 * v
m0 = Sqr(Abs(ll / e))
Else
m0 = mr
End If
Print #2, Spc(5); "单位权中误差=+/-"; Format(m0, "#.0000")
If g = "p" Then
Print #2, Spc(5); "编号纵坐标平差值(m)横坐标平差值(m)"
For i = 1 To z
Print #2, Spc(7); i; Spc(10); Format(x(i), "#.0000"); Spc(12); Format(y(i), "#.0000")
Next i
End If
Print #2, "起点号 终点号 方位角方位角中误差边长边长中误差边长相对中误差分母"
For a = st + 1 To z
If aa = "aa1" Then
j = n(a - 1): k = n(a) - 1
Else
j = q(a - st): k = q(a - st + 1) - 1
End If
For o = j To k
b = CInt(Fix(h(o)))
If a > b Or (a <= v And b <= v) Then
Else
bb = "1": BB_10: BB_12
Print #2, Spc(2); a; Spc(3); b;
Print #2, Spc(4); Format(dms(t), "#.000000"); Spc(6); Format(e7, "#.000")
If Abs(e6) < 0.000001 Then
Print #2,
Else
Print #2, Spc(9); Format(100 * Fix(s / e7), "#")
End If
End If
Next o
Next a
Print #2, Spc(5); "待定点号 Mx My M E F Q "
For k = v + 1 To z
p1 = 2 * (k - v - 1): e1 = Abs(c(p1, p1))
e2 = Abs(c(p1 + 1, p1 + 1)): e3 = c(p1 + 1, p1)
Print #2, Spc(7); k
e4 = m0 * Sqr(e1): e5 = m0 * Sqr(e2): e6 = Sqr(e4 ^ 2 + e5 ^ 2)
Print #2, Spc(7); Format(e4, "#.000")
Print #2, Spc(4); Format(e5, "#.000")
Print #2, Spc(4); Format(e6, "#.000")
If e1 - e2 <> 0 Then
BB_15
Print #2, Spc(4); Format(e4, "#.000")
Print #2, Spc(3); Format(e5, "#.000")
Print #2, Spc(5); Format(dms(e7), "#.0000")
Else
Print #2,
End If
Next k
Print #2, Spc(5); "起点号终点号相对误差椭圆长半径相对误差椭圆短半径长半径方向"
701: jk = InputBox("以XX,XX形式输入需计算相对误差椭圆的两待定点点号" & vbCrLf & "如输入0则转入下一步计算")
If jk <> 0 Then BB_14: GoTo 701
Close #2
sWord '调用子程序在word上显示计算成果
End
End Sub
还有一个Inp自定义函数
Sub Inp() '调入数据并保存
strDataFileName = InputBox$(" 数据库文件名")
dbPath = App.Path & strDataFileName
Set db = OpenDatabase(dbPath)
strSQL = "SELECT * FROM tablel"
Set Rs = db.OpenRecordset(strSQL)
aArray = Rs.GetRows(7)
v = aArray(1, 0)
z = aArray(2, 0)
m1 = aArray(3, 0)
m2 = aArray(4, 0)
t0 = aArray(5, 0)
aa = aArray(6, 0)
g = aArray(7, 0)
If g = "平差与精度评定" Then
Print #2, Spc(27); "平差网平差成果"
ElseIf g = "精度估算" Then
Print #2, Spc(27); "平面网精度估算成果"
End If
Print #2, Spc(5); "已知点数="; v
Print #2, Spc(5); "总点数="; z
Print #2, Spc(5); "已知边和观测边数="; m1
Print #2, Spc(5); "方向观测数="; m2
Print #2, Spc(5); "已知坐标方位角数="; t0
Print #2, Spc(5); "网型:"; aa
Print #2, Spc(5); "平差与精度评定还是精度估算:"; g
If aa = "三边网" Then
aa = "aa1"
ElseIf aa = "三角网" Then
aa = "aa2"
ElseIf aa = "导线网与边角网" Then
aa = "aa3"
End If
If g = "平差与精度评定" Then g = "p"
If g = "精度估算" Then g = "q"
If g = "p" Then
dd = InputBox("一般网还是特殊网" & vbCrLf & "一般网按n健,特殊网按y键")
Print #2, Spc(5); "一般网还是特殊网"
If dd = "n" Then
Print #2, "一般网"
ElseIf dd = "y" Then
Print #2, "特殊网"
End If
End If
If m1 > 0 Then
d0 = Val(InputBox("已知边数"))
mc = Val(InputBox("固定误差"))
pp = Val(InputBox("比例误差"))
Print #2, Spc(5); "已知边数="; d0
Print #2, Spc(5); "固定误差="; mc
Print #2, Spc(5); "比例误差="; pp
End If
If aa = "aa3" Then
st = Val(InputBox("导线网中未设站观测的已知点数"))
Print #2, Spc(5); "导线网中未设站观测的已知点数="; st
Else
st = 0
End If
If m2 < 1 Then '纯测边网取1KM边长观测作为单位权观测
mr = mc + pp / 10
Print #2, Spc(5); "单位权中误差先验值="; mr
ElseIf m1 < 1 And g = "p" Then
ElseIf g = "q" Or (m1 > 0 And m2 > 0) Then '如果精度估算或有边和方向两种观测量
mr = Val(InputBox("输入方向观测单位权中误差先验值"))
Print #2, Spc(5); "单位权中误差先验值="; mr
End If
Print #2, Spc(5); "编号纵坐标(m)横坐标(m)"
ReDim x(z), y(z)
If g = "q" Then
vz = z
Else
vz = v
End If
strSQL = "SELECT*FROM table2"
Set Rs = db.OpenRecordset(strSQL)
aArray = Rs.GetRows(3 * vz)
For j = 0 To UBound(aArray, 2)
x(j + 1) = aArray(1, j): y(j + 1) = aArray(2, j): Print #2, Spc(7); j + 1
Print #2, Spc(11); Format(x(j + 1), "#.0000"); Spc(9); Format(y(j + 1), "#.0000")
Next j
If dd = "y" And g = "p" Then
ReDim x0(v), y0(v)
For j = 1 To v
x0(j) = x(j): x(j) = 0: y0(j) = y(j): y(j) = 0
Next j
End If
If t0 > 0 Then
Print #2, Spc(5); "编号起点号。终点号坐标方位角(dms)"
If g = "q" Then
i = 2: ReDim ha(t0)
ElseIf g = "p" Then
i = 3: ReDim a1(t0), ha(t0)
End If
...全文
2060 14 打赏 收藏 VB程序为什么不能正常运行 简单介绍一下这个程序下面是一个窗体的源代码 毕设差不多是照搬了一本书的一个程序 比较大 敲完书上的源代码后 各种修改后无报错(其实也就改了声明变量的访问权限 源代码是private 改成了public 不然一直报子程序或函数未定义)改了之后就不报了 下面代码只是一个部分 还有一部分全部是自定义的函数 我放到模块里面了 FORM1.Show 其实我还是不太懂为什么要这一步 因为我觉得没有用 按照设想 应该是一运行程序 会弹出InputBox 就如下面代码说的一样 然后一步一步来 也不用在窗体添加什 复制链接
扫一扫 分享 转发到动态 举报 AI 作业
写回复 配置赞助广告取 消
确 定
用AI写文章 14 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 Misaya灬岳桦 2019-05-20 打赏举报 回复 今天才有空弄了一下....算是弄明白了这个东西 结贴结贴 以后还请各位大神朵朵关照 ElectricKang 2019-05-15 打赏举报 回复 这个应该是缺少文件了吧 milaoshu1020 2019-05-15 打赏举报 回复 打开工程时提示缺少Module1.bas文件;
Misaya灬岳桦 2019-05-15 打赏举报 回复 今天先写论文了 等明天再给各位大神结贴... 再次感谢 Misaya灬岳桦 2019-05-14 打赏举报 回复 引用 10 楼 舉杯邀明月 的回复:[quote=引用 9 楼 Misaya灬岳桦 的回复:]
[quote=引用 8 楼 脆皮大雪糕 的回复:]
搞了半天,你的项目启动窗体是form1 但是form1启动后并没有任何事件去触发后续的事情啊。比如form1_onload事件里面去调用一下你的程序逻辑入口,或者一个按钮onclick的时候去调用啥的都行啊。
如果启动窗体设置为form2,就能有所动作,因为你的form2的on_load事件里面干活了呀
你的意思是吧第二行 form1.show改为form2.show么 其实我也不理解源代码作者为什么要加一行form1.show[/quote]
1. 你的代码“工程”包含两个Form ,但是 Form1却基本“无作用”。
2. 按你目前的“工程”结构,应该把“启动窗体”设置为Form2(目前是Form1);
这样改了之后,去掉Form1、并把 Form2的 Form_Load( )中的那句 Form1.Show 去掉,
运行效果及各种“状态”,都“不会有变化”。
3. 按你目前的那个代码,其实不用任何窗口都可以。就用一个标准模块,写一个 Sub Main( ) ,
然后把 Form2中的代码复制到Sub Main中去,移除那两个Form。
然后“最终效果”也跟你目前没什么区别(除了“不会出现两个空白窗口”之外)。
剩下的,就是你的代码Bug问题了,比如:
FileName = App.Path & FileName
一般应该写成这样才对:
FileName = App.Path & "\" & FileName
(一般在输入文件名时,恐怕不会特意的在前面添加个 \ 字符吧!!!)
还有没有其它的问题,我也没细看了…………
[/quote]
谢谢各位大神指点 感激涕零 明天等我试验一下 跪服! 舉杯邀明月 2019-05-14 打赏举报 回复 引用 9 楼 Misaya灬岳桦 的回复:[quote=引用 8 楼 脆皮大雪糕 的回复:]
搞了半天,你的项目启动窗体是form1 但是form1启动后并没有任何事件去触发后续的事情啊。比如form1_onload事件里面去调用一下你的程序逻辑入口,或者一个按钮onclick的时候去调用啥的都行啊。
如果启动窗体设置为form2,就能有所动作,因为你的form2的on_load事件里面干活了呀
你的意思是吧第二行 form1.show改为form2.show么 其实我也不理解源代码作者为什么要加一行form1.show[/quote]
1. 你的代码“工程”包含两个Form ,但是 Form1却基本“无作用”。
2. 按你目前的“工程”结构,应该把“启动窗体”设置为Form2(目前是Form1);
这样改了之后,去掉Form1、并把 Form2的 Form_Load( )中的那句 Form1.Show 去掉,
运行效果及各种“状态”,都“不会有变化”。
3. 按你目前的那个代码,其实不用任何窗口都可以。就用一个标准模块,写一个 Sub Main( ) ,
然后把 Form2中的代码复制到Sub Main中去,移除那两个Form。
然后“最终效果”也跟你目前没什么区别(除了“不会出现两个空白窗口”之外)。
剩下的,就是你的代码Bug问题了,比如:
FileName = App.Path & FileName
一般应该写成这样才对:
FileName = App.Path & "\" & FileName
(一般在输入文件名时,恐怕不会特意的在前面添加个 \ 字符吧!!!)
还有没有其它的问题,我也没细看了…………
milaoshu1020 2019-05-14 打赏举报 回复 先告诉我们,你这个程序的主要功能是干什么的? Misaya灬岳桦 2019-05-14 打赏举报 回复 引用 8 楼 脆皮大雪糕 的回复:搞了半天,你的项目启动窗体是form1 但是form1启动后并没有任何事件去触发后续的事情啊。比如form1_onload事件里面去调用一下你的程序逻辑入口,或者一个按钮onclick的时候去调用啥的都行啊。
如果启动窗体设置为form2,就能有所动作,因为你的form2的on_load事件里面干活了呀
你的意思是吧第二行 form1.show改为form2.show么 其实我也不理解源代码作者为什么要加一行form1.show 脆皮大雪糕 2019-05-14 打赏举报 回复 搞了半天,你的项目启动窗体是form1 但是form1启动后并没有任何事件去触发后续的事情啊。比如form1_onload事件里面去调用一下你的程序逻辑入口,或者一个按钮onclick的时候去调用啥的都行啊。
如果启动窗体设置为form2,就能有所动作,因为你的form2的on_load事件里面干活了呀 Misaya灬岳桦 2019-05-14 打赏举报 回复 引用 1 楼 脆皮大雪糕 的回复:只给了个vbp,还有form1 和 form2 呢
整个文件夹打包好么?不要舍不得舍不得的。
....抱歉抱歉....因为换了电脑...form1 form2 格式之前在文件夹里补一个位置...我没看到....我甚至不知道完整的文件包括啥....后来又找到传上去啦....麻烦啦..
链接: https://pan.baidu.com/s/1mAt7iXAnn7CQjMq6bDvEdQ 提取码: djsb 复制这段内容后打开百度网盘手机App,操作更方便哦 脆皮大雪糕 2019-05-14 打赏举报 回复 只给了个vbp,还有form1 和 form2 呢
整个文件夹打包好么?不要舍不得舍不得的。 Misaya灬岳桦 2019-05-14 打赏举报 回复 引用 4 楼 milaoshu1020 的回复:把VB6工程的所有文件上传到百度网盘上,然后在这里贴一下共享地址吧;
只看部分代码不知道问题出在哪里.
好的好的 已经上传了 下面是链接
因为子函数调用的问题我实在解决不了 于是把大部分声明的变量和BB_XX 自定义函数的访问权限从private改成了public
那些自定义函数在form1和模块里面都有 因为纯小白 所以希望大佬们理解
链接: https://pan.baidu.com/s/1reB_Jctm-JGgUBw8Xm_Myw 提取码: bp9f 复制这段内容后打开百度网盘手机App,操作更方便哦 milaoshu1020 2019-05-14 打赏举报 回复 把VB6工程的所有文件上传到百度网盘上,然后在这里贴一下共享地址吧;
只看部分代码不知道问题出在哪里. Misaya灬岳桦 2019-05-14 打赏举报 回复 引用 2 楼 milaoshu1020 的回复:先告诉我们,你这个程序的主要功能是干什么的?
是一个平差程序 应该是程序读入数据后进行处理 然后输出平差结果 在load里面的代码我认为是主函数 运行它来调用其他自定义函数来进行平差计算 然后输出平差结果 VB 程序运行列表 VB 程序运行列表
VB 程序运行列表
VB 程序运行列表 VB检测程序是否在运行 检测程序是否正在运行或文件是否正在使用
免资源分,欢迎下载 VB程序设计 -程序设计视频, VB程序设计 -视频教程-程序设计视频, VB程序设计教程 例题 VB程序设计教程资源书 例题 全套资料 清华大学出版社 VB程序抽奖系统 VB程序抽奖系统,用最简单的代码实现需要的功能
VB基础类
7,785
社区成员
197,585
社区内容
发帖 与我相关 我的任务 VB基础类 VB 基础类 复制链接
扫一扫 分享 确定 社区描述 VB 基础类 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告 试试用AI创作助手写篇文章吧
+ 用AI写文章