在窗口中创建text1,text2和command1,代码如下: Private Sub Command1_Click() Dim part(100) As String expression = Text1.Text lenght = Len(expression) For z = 1 To lenght part(z) = Mid(expression, z, 1) Next z Do Until lenght = 1 For z = 1 To lenght If part(z) = "^" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then part(z - 1) = Str(Val(part(z - 1)) ^ Val(part(z + 1))) part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If Next z For z = 1 To lenght If part(z) = "*" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then part(z - 1) = Str(Val(part(z - 1)) * Val(part(z + 1))) part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If Next z For z = 1 To lenght If part(z) = "/" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then part(z - 1) = Str(Val(part(z - 1)) / Val(part(z + 1))) part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If Next z For z = 1 To lenght If part(z) = "+" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then part(z - 1) = Str(Val(part(z - 1)) + Val(part(z + 1))) part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If Next z For z = 1 To lenght If part(z) = "-" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then part(z - 1) = Str(Val(part(z - 1)) - Val(part(z + 1))) part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If Next z For z = 1 To lenght If part(z) = "0" Or part(z) = "1" Or part(z) = "2" Or part(z) = "3" Or part(z) = "4" Or part(z) = "5" Or part(z) = "6" Or part(z) = "7" Or part(z) = "8" Or part(z) = "9" Then If part(z - 1) = "(" Or part(z + 1) = ")" Then part(z - 1) = part(z) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If End If Next z Loop Text2.Text = part(1) End SubPrivate Sub Command2_Click() Text1.Text = Str(8)End SubPrivate Sub Form_Load() Text1.Text = "" Text2.Text = "" End Sub 该程序能算出+,-,*,/,平方(如果是开方的话,可以化成平方)以及括号。如果你还想计算三角函数或对数,可以按类似的方法。
对不起,上次的那个错了,代码如下: Private Sub Command1_Click() Dim part(100) As String expression = Text1.Text lenght = Len(expression) For z = 1 To lenght part(z) = Mid(expression, z, 1) Next z lebel: For z = 1 To lenght - 1 If (Val(part(z)) <> 0 Or part(z) = "0") And (Val(part(z + 1)) <> 0 Or part(z + 1) = "0") Then part(z) = part(z) & part(z + 1) For z2 = z + 1 To lenght - 1 part(z2) = part(z2 + 1) Next z2 lenght = lenght - 1 GoTo lebel End If Next z Do Until lenght = 1 For z = 1 To lenght If part(z) = "^" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then part(z - 1) = Str(Val(part(z - 1)) ^ Val(part(z + 1))) part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If Next z For z = 1 To lenght If part(z) = "*" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then part(z - 1) = Str(Val(part(z - 1)) * Val(part(z + 1))) part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If Next z For z = 1 To lenght If part(z) = "/" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then part(z - 1) = Str(Val(part(z - 1)) / Val(part(z + 1))) part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If Next z For z = 1 To lenght If part(z) = "+" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then part(z - 1) = Str(Val(part(z - 1)) + Val(part(z + 1))) part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If Next z For z = 1 To lenght If part(z) = "-" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then part(z - 1) = Str(Val(part(z - 1)) - Val(part(z + 1))) part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If Next z For z = 1 To lenght If Val(part(z)) <> 0 Or part(z) = "0" Then If part(z - 1) = "(" And part(z + 1) = ")" Then part(z - 1) = part(z) For z2 = z To lenght part(z2) = part(z2 + 2) Next z2 lenght = lenght - 2 z = z - 2 End If End If Next z Loop Text2.Text = part(1) End SubPrivate Sub Form_Load() Height = 2300 Width = 4600 Text1.Text = "" Text2.Text = "" End SubPrivate Sub Text1_Click() If keyascii = 13 Then Command1_ClickEnd Sub
to limengchen: 厉害厉害,写了这么多,佩服佩服,这段代码是你编的吗????
Q1 answer: 最简单的方法是借用 SQL ! Dim adoConnection As New ADODB.Connection 'adoConnection.Open "Provider=SQLOLEDB.1;Persist Security Info=False;Server=ServerName;UID=YourUID;PWD=YourPWD;" adoConnection.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data Source= "xxx\data\NWind97.mdb;Persist Security Info=False" Dim adoRecordset As New ADODB.Recordset adoRecordset.Open "select DISTINCT " & "(9+ 1) * 3 / 10 + 1" & " From Tablename", adoConnection 'tablename为任意已有表名,MS SQL 7 可无 " From Tablename " msgbox adoRecordset.field.item(0).value 问题2: 同前 问题3: 同前
Q1 answer: 最简单的方法是借用 SQL ! Dim adoConnection As New ADODB.Connection 'adoConnection.Open "Provider=SQLOLEDB.1;Persist Security Info=False;Server=ServerName;UID=YourUID;PWD=YourPWD;" adoConnection.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=xxx\data\NWind97.mdb;Persist Security Info=False" Dim adoRecordset As New ADODB.Recordset adoRecordset.Open "select DISTINCT " & "(9+ 1) * 3 / 10 + 1" & " From Tablename", adoConnection 'tablename为任意已有表名,MS SQL 7 可无 " From Tablename " msgbox adoRecordset.field.item(0).value 问题2: 同前 问题3: 同前
第一个问题 : 引用Msscript.ocx 控件:Private Sub Command1_Click() On Error GoTo Errl ScriptControl1.Language = "VBScript"MsgBox ScriptControl1.Eval(Text1)Exit Sub Errl: MsgBox Err.DescriptionEnd Sub
Private Sub Command1_Click()
Dim part(100) As String
expression = Text1.Text
lenght = Len(expression)
For z = 1 To lenght
part(z) = Mid(expression, z, 1)
Next z
Do Until lenght = 1
For z = 1 To lenght
If part(z) = "^" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then
part(z - 1) = Str(Val(part(z - 1)) ^ Val(part(z + 1)))
part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
Next z
For z = 1 To lenght
If part(z) = "*" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then
part(z - 1) = Str(Val(part(z - 1)) * Val(part(z + 1)))
part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
Next z
For z = 1 To lenght
If part(z) = "/" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then
part(z - 1) = Str(Val(part(z - 1)) / Val(part(z + 1)))
part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
Next z
For z = 1 To lenght
If part(z) = "+" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then
part(z - 1) = Str(Val(part(z - 1)) + Val(part(z + 1)))
part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
Next z
For z = 1 To lenght
If part(z) = "-" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then
part(z - 1) = Str(Val(part(z - 1)) - Val(part(z + 1)))
part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
Next z
For z = 1 To lenght
If part(z) = "0" Or part(z) = "1" Or part(z) = "2" Or part(z) = "3" Or part(z) = "4" Or part(z) = "5" Or part(z) = "6" Or part(z) = "7" Or part(z) = "8" Or part(z) = "9" Then
If part(z - 1) = "(" Or part(z + 1) = ")" Then
part(z - 1) = part(z)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
End If
Next z
Loop
Text2.Text = part(1)
End SubPrivate Sub Command2_Click()
Text1.Text = Str(8)End SubPrivate Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
End Sub
该程序能算出+,-,*,/,平方(如果是开方的话,可以化成平方)以及括号。如果你还想计算三角函数或对数,可以按类似的方法。
Private Sub Command1_Click()
Dim part(100) As String
expression = Text1.Text
lenght = Len(expression)
For z = 1 To lenght
part(z) = Mid(expression, z, 1)
Next z
lebel:
For z = 1 To lenght - 1
If (Val(part(z)) <> 0 Or part(z) = "0") And (Val(part(z + 1)) <> 0 Or part(z + 1) = "0") Then
part(z) = part(z) & part(z + 1)
For z2 = z + 1 To lenght - 1
part(z2) = part(z2 + 1)
Next z2
lenght = lenght - 1
GoTo lebel
End If
Next z
Do Until lenght = 1
For z = 1 To lenght
If part(z) = "^" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then
part(z - 1) = Str(Val(part(z - 1)) ^ Val(part(z + 1)))
part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
Next z
For z = 1 To lenght
If part(z) = "*" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then
part(z - 1) = Str(Val(part(z - 1)) * Val(part(z + 1)))
part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
Next z
For z = 1 To lenght
If part(z) = "/" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then
part(z - 1) = Str(Val(part(z - 1)) / Val(part(z + 1)))
part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
Next z
For z = 1 To lenght
If part(z) = "+" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then
part(z - 1) = Str(Val(part(z - 1)) + Val(part(z + 1)))
part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
Next z
For z = 1 To lenght
If part(z) = "-" And part(z - 1) <> "(" And part(z - 1) <> ")" And part(z + 1) <> "(" And part(z + 1) <> ")" Then
part(z - 1) = Str(Val(part(z - 1)) - Val(part(z + 1)))
part(z - 1) = Mid(part(z - 1), 2, Len(part(z - 1)) - 1)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
Next z
For z = 1 To lenght
If Val(part(z)) <> 0 Or part(z) = "0" Then
If part(z - 1) = "(" And part(z + 1) = ")" Then
part(z - 1) = part(z)
For z2 = z To lenght
part(z2) = part(z2 + 2)
Next z2
lenght = lenght - 2
z = z - 2
End If
End If
Next z
Loop
Text2.Text = part(1)
End SubPrivate Sub Form_Load()
Height = 2300
Width = 4600
Text1.Text = ""
Text2.Text = ""
End SubPrivate Sub Text1_Click()
If keyascii = 13 Then Command1_ClickEnd Sub
厉害厉害,写了这么多,佩服佩服,这段代码是你编的吗????
Dim adoConnection As New ADODB.Connection
'adoConnection.Open "Provider=SQLOLEDB.1;Persist Security Info=False;Server=ServerName;UID=YourUID;PWD=YourPWD;"
adoConnection.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data Source= "xxx\data\NWind97.mdb;Persist Security Info=False"
Dim adoRecordset As New ADODB.Recordset
adoRecordset.Open "select DISTINCT " & "(9+ 1) * 3 / 10 + 1" & " From Tablename", adoConnection 'tablename为任意已有表名,MS SQL 7 可无 " From Tablename "
msgbox adoRecordset.field.item(0).value
问题2: 同前
问题3: 同前
Dim adoConnection As New ADODB.Connection
'adoConnection.Open "Provider=SQLOLEDB.1;Persist Security Info=False;Server=ServerName;UID=YourUID;PWD=YourPWD;"
adoConnection.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=xxx\data\NWind97.mdb;Persist Security Info=False"
Dim adoRecordset As New ADODB.Recordset
adoRecordset.Open "select DISTINCT " & "(9+ 1) * 3 / 10 + 1" & " From Tablename", adoConnection 'tablename为任意已有表名,MS SQL 7 可无 " From Tablename "
msgbox adoRecordset.field.item(0).value
问题2: 同前
问题3: 同前
我要回答的是《各位程序员有抛弃女友或主动离婚的吗?》(http://www.csdn.net/expert/Topic/52960.shtm)
引用Msscript.ocx 控件:Private Sub Command1_Click()
On Error GoTo Errl
ScriptControl1.Language = "VBScript"MsgBox ScriptControl1.Eval(Text1)Exit Sub
Errl:
MsgBox Err.DescriptionEnd Sub
wokao!好长!