请教VB数据库DBGrid以及ini文件的问题

unix123 2000-04-11 09:19:00
向各位VB高手请教几个小问题
1.我利用Data1和DbGrid控件来查看数据库的内容,我发现如果是SQL Server7.0
, 我可以通过设置 Data1.RecordSource = "select * from table1 where
field1>0 " 来查看数据表的子集,但是对于Foxpro的数据库,我的设置为
data1.databasename="c:\temp"
data1.recordsource="table1.dbf"
当我需要查看某一部分记录信息时,我把data1.recordsource改为
"select * from table1 where field1>0"则出现找不到对象的错误,
我应该如何解决
2.我利用Windwos API来读取ini文件,但是每次都读不到,又无法跟踪到API内部,
请高手指点
模块中声明部分如下所示:
Declare Function GetPrivateProfileString Lib "kernel32" Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As String,
lpKeyName As Any, ByVal lpDefault As String, ByVal lpRetunedString
As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
程序中:
Function GetSysIni(section, key)
Dim retVal As String, AppName As String, worked As Integer
retVal = String$(255, 0)
worked = GetPrivateProfileString(section, key, "", retVal, Len(retVal), "c:\1.ini")
If worked = 0 Then
GetSysIni = "未知"
Else
GetSysIni = Left(retVal, InStr(retVal, Chr(0)) - 1)
End If
End Function

Private Sub Form_Load()
i = GetSysIni("ALARM", "TimeOut")
End Sub

1.ini文件内容
[ALARM]
Period=60
TimeOut=20

在上面的例子中worked总是返回0,文件名称我也试着用过"c:\\1.ini"和"1.ini"
没有效果

谢谢!!
...全文
218 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Un1 2000-04-12
  • 打赏
  • 举报
回复
申明中:
1:
你用Recordset打开table1.dbf后在调用recordset.Openrecordset(sql)试试。

2:
lpKeyName As Any
错误,此函数必须全部ByVal。

Public Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
dengdun 2000-04-11
  • 打赏
  • 举报
回复
我把你的程序修改了一下,现在是没有问题了,注意要指明byVal,VB默认是以byRef来传参的。祝编程愉快。
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Function GetSysIni(ByVal section As String, ByVal key As String)
Dim retVal As String, AppName As String, worked As Integer
retVal = String$(255, 0)
retVal = Space(255)
worked = GetPrivateProfileString(section, key, "", retVal, Len(retVal), "c:\1.ini")

If worked = 0 Then
GetSysIni = "未知"
Else
GetSysIni = Left(retVal, InStr(retVal, Chr(0)) - 1)
End If
End Function

Private Sub Form_Load()
i = GetSysIni("ALARM", "TimeOut")
End Sub

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧