我说的是用最少的代码,而不是写一个很大的程序(傻逼也会做)比如用getstring 一句代码取出全部字符串,是这个意思,继续讨论讨论
解决方案 »
- VB中如何将String中的数字与字母提取出来?
- 生成Excel问题
- vb6如何实现文本框中实现全选(不用sel)
- base64编码问题
- 关于VB select form where between
- 【送分~!关于CommonDialog控件~!】
- 怎样编程完成(Print Screen)功能??急!!!(在线等..)
- 如何获取访问本机的计算机名或ip地址或网址******在线等候******
- 兄弟们,大家好,好久没来了
- Crystal Report 在vb6.0中有没有?
- 数据库高手赶快救命,上头催得紧~~(版主,泰山,是不是跑出去喝酒去了?)
- 300分,还是问一个关于数据库操作的问题,快点来拿分啊!!!!!快
set field = field + '这是一个字符串'
========================
你知道 每个 字段类型 吗? Text ,Memo 类型中 需要加 这个字符串 吗?
在 Text 类型中的 数字 前面 也要 加吗?
for i=1 to rst.Fields.Count-1
if rst.Fields(i).type=xxx then
rst.Fields(i).Value=xxxxxxxxxxxxxxxxx
end if 这个意思,现在要遍历全部数据库
Set RS = CN.OpenSchema(adSchemaTables)
cobTable.Clear
Do Until RS.EOF
If RS("TABLE_TYPE") = "TABLE" Then
cobTable.AddItem RS("TABLE_NAME")
End If
RS.MoveNext
Loop
RS.Close
Set RS = New Adodb.RecordSet'以下代码是获得一个表的所有字段和类型
strSql = "select * from " & strTableName
RS.Open strSql
Dim m As Integer
List1.Clear
List2.Clear
For m = 0 To RS.Fields.Count - 1
List1.AddItem RS.Fields(m).Name
List2.AddItem RS.Fields(m).Type
Next m
RS.Close '你自己 再 改一下。 OK ?
for i=1 to rst.Fields.Count-1
if rst.Fields(i).type=xxx then
rst.Fields(i).Value=xxxxxxxxxxxxxxxxx
end if 有什么不同?代码长了,功能少了,而且程序的要求是设置值,而不是列出就算列出,也应当是先列到变量里,在跳出循环后再进行处理,而不是在循环内部使用控件,在一个大型的程序中,这样至少可以让运算速度快一倍------------------------------你那个代码比我自已写的还差劲,我为什么要用你的改啊????真烦你这种人,好好讨论一点问题也不行,你就算技术好,也不能别人发一点问题一定要你过关批准啊???
(哼,要不是看在300分的面子上,我才懒得理你) Set RS = CN.OpenSchema(adSchemaTables)
Do Until RS.EOF
If RS("TABLE_TYPE") = "TABLE" Then
set RS1=CN.EXECUTE("select * from "+RS("TABLE_NAME"))+" WHERE 1=0":strSQL=""
FOR I=0 TO RS1.FIELDS.COUNT-1:if RS1.Fields(i).Type=adText then strSQL=strSQL+RS1.FIELDS(I).NAME+"="+RS1.FIELDS(I).NAME+"'这是一个字符串',":Next
CN.EXECUTE "update "+RS("TABLE_NAME")+" SET "+left(strSQL,len(strSQL)-1)
RS1.CLOSE:set RS1=NOTHING
End If
RS.MoveNext
Loop
RS.CloseTNND,居然这样还有11行!还没包括打开数据库的语句。
我估计是很难再短了。老兄你看呢?
关键的一句应该是:
FOR I=0 TO RS1.FIELDS.COUNT-1:if RS1.Fields(i).Type=adText then strSQL=strSQL+RS1.FIELDS(I).NAME+"="+RS1.FIELDS(I).NAME+"+'这是一个字符串',":Next
Option Explicit
Option Compare Text'================================================================
'功能﹕返回SQL語句
'參數﹕strTableName 你要進行操作的資料表
' bolUpdate 是否需要進行Update﹐因為不知道你是要將所有取出的
' 的數據加上一個字符串還是將這個加上的字符串UPDATE
' 到數據庫﹐所以參數讓你選擇
' strAdd 要加上去的字符串
'返回﹕得到SELECT或UPDATE的SQL字符串
'================================================================
Function getBuildSql(strTableName As String, strAdd As String, bolUpdate As Boolean) As String
Dim objCN As New ADODB.Connection
Dim objRst As New ADODB.Recordset
Dim strCn As String
Dim strRtSql As String
Dim iCount As Integer
Dim i As Integer
strCn = "provider=msdasql.1;server=youServer;database=youDatabasse;uid=sa;pwd=;"
objCN.CursorLocation = adUseClient
objCN.Open strCn
objRst.CursorLocation = adUseClient
'打開一個只讀向前型的RecordSet 只用于讀取數據類型
objRst.Open "SELECT * FROM " + strTableName + " WHERE 1=2", objCN, adOpenForwardOnly, adLockBatchOptimistic
iCount = objRst.Fields.Count
If bolUpdate Then
With objRst
For i = 0 To iCount - 1
If IsStringType(.Fields(i).Type) Then
strRtSql = strRtSql & .Fields(i).Name & "+" & strAdd & ","
Else
strRtSql = strRtSql & .Fields(i).Name & ","
End If
Next
If Right(strRtSql, 1) = "," Then
strRtSql = Left(strRtSql, Len(strRtSql) - 1)
End If
strRtSql = "SELECT " & strRtSql & " FROM " & strTableName
End With
Else
With objRst
For i = 0 To iCount - 1
If IsStringType(.Fields(i).Type) Then
strRtSql = strRtSql & .Fields(i).Name & "=" & .Fields(i).Name & "+'" & strAdd & "'"
End If
Next
If Right(strRtSql, 1) = "," Then
strRtSql = Left(strRtSql, Len(strRtSql) - 1)
End If
strRtSql = "Update " & strTableName & " Set " & strRtSql
End With
End If
objRst.Close
Set objRst = Nothing
End Function
'===========================================================================
'功能﹕得到Adodb.Field 對象的字段類型
'參數﹕intFieldType 字段類型
'返回﹕返回轉換后的字段類型(Integer)
'===========================================================================
'Public Function GetFieldType(intFieldType As Integer) As Integer
' Select Case intFieldType
' Case 3, 20, 14, 5, 131, 4, 2, 16, 21, 19, 18, 17, 139
' GetFieldType = fieldTypeNumeric
' Case 11, 6, 1
' GetFieldType = fieldTypeBoolean
' Case 8, 129, 201, 203, 200, 202, 130
' GetFieldType = fieldTypeString
' Case 7, 133, 134, 135, 64
' GetFieldType = fieldTypeDateTime
' Case Else
' GetFieldType = fieldTypeOther
' End Select
'End Function
'===========================================================================
'功能﹕檢查Adodb.Field 的字符串類型是否是字符串
'參數﹕intFieldType 字段類型
'返回﹕true 表示是﹐false 表示不是
'===========================================================================
Public Function IsStringType(intFieldType As Integer) As Boolean
Select Case intFieldType
Case 8, 129, 201, 203, 200, 202, 130
IsStringType = True
Case Else
IsStringType = False
End Select
End Function
十行代码就真的十行啊?,一百行也可以啊,整天只知道争强好胜,没长进的东西自已先看看能不能用再拿出来好不好?