关于ACCESS备注字段的问题,来者高分!
有的说备注字段只能储存64K以下内容,有的说没有限制
我试了一下,好象确实64K以下
插入一个大图片后VB显示“堆饯溢出”
插入小图片就没事
那怎么办呢?我又想有文字和大图片,又想用ACCESS,怎么办?
问题点数:120、回复次数:22Top
1 楼dbcontrols(泰山__抛砖引玉)回复于 2002-01-29 12:41:04 得分 20
来者Top
2 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2002-01-29 12:42:28 得分 20
虽然我不知道,但是你写了“来者高分”,只有过来凑凑热闹。
Top
3 楼hydnoahark(诺亚方舟)回复于 2002-01-29 12:42:42 得分 20
使用OLE Object类型而不要使用Memo类型Top
4 楼cqq_chen(我是谁)回复于 2002-01-29 12:42:44 得分 20
很好办!图片存放时只放它的路径就可以了。好处是:ACCESS数据库达到1G以后,数据容易出问题,而在数据库中存放太大的图片将直接让数据库变的极为庞大,所以只存好图片的路径是最好的方法之一;不好的是:如果图片被人移动或删除,则发现找不到图片的错误。Top
5 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2002-01-29 12:44:39 得分 20
把大图片分割成小图片!
这是制作网页的常见办法!Top
6 楼bdzwc(bdzwc)回复于 2002-01-29 12:48:01 得分 0
to 诺亚方舟:
使用OLEOBJECT类型很不方便啊,不能直接编辑什么的,很麻烦
TO 我是谁:
我不知道用户会从哪里插入啊?
真的没有办法吗?Top
7 楼dbcontrols(泰山__抛砖引玉)回复于 2002-01-29 12:48:15 得分 0
http://leson.hongnet.com/sql/1/Top
8 楼dbcontrols(泰山__抛砖引玉)回复于 2002-01-29 12:51:25 得分 0
http://media.ccidnet.com/media/cce/353/01401.htmTop
9 楼bdzwc(bdzwc)回复于 2002-01-29 13:10:23 得分 0
大哥,那两个站点我上不去Top
10 楼Richard2001(Richard)回复于 2002-01-29 13:13:06 得分 0
将图片放在ImageList控件中。不放在数据库中。Top
11 楼rushing(勇敢的心)回复于 2002-01-29 13:14:55 得分 0
可以超过64K。几兆都没问题。
我以前存过图片。
Top
12 楼bdzwc(bdzwc)回复于 2002-01-29 15:29:56 得分 0
真的吗?你怎么办到的?Top
13 楼lihonggen0(李洪根,MS MVP,标准答案来了)回复于 2002-01-29 16:00:16 得分 20
应该能存 64k 以上,请检查你的代码
"堆饯溢出"是程序运行时在内存的堆栈中已满,Top
14 楼bdzwc(bdzwc)回复于 2002-01-30 08:54:45 得分 0
HELPTop
15 楼hycapril(四月_健康最重要,赚钱也重要~~~)回复于 2002-01-30 09:57:20 得分 0
我赞成'我是谁'的看法...........Top
16 楼lou_df(ldf)回复于 2002-01-30 10:08:18 得分 0
用TEXT字段保存路径应该是个好办法。比较灵活,还可以修改、更换图像。用数据库保存图像可能保密性比较好。Top
17 楼AdamBear(亚当熊)回复于 2002-01-30 10:27:50 得分 0
“堆饯溢出”,是程序的问题,ACCESS没有64K限制、但自定义类型的变量不能超过64K.
还有一些64K限制,下面摘到MSDN:
作为变量声明的数组不能使用全部数组空间;只有数组描述符对 64K 的限制起作用。例如,在过程中声明或作为模块级声明,Dim x(1000000) As Byte。然而,如果在记录中声明了一个大的、固定大小的数组,然后将这些记录的示例声明为变量时,就会发生内存溢出。
至于“堆饯溢出”,MSDN里是这么说的:
在运行时过程中的参数和局部变量占用堆栈空间。而模块级变量和静态变量不占堆栈空间,因为它们被分配在窗体或模块的数据段中。任何被调用的 DLL 过程,在执行时都要使用堆栈。
Visual Basic 自己也使用堆栈,例如,在计算表达式时保存中间值。
Visual Basic全部可用堆栈的大小是每线程一兆字节(1MB)。然而,如果有相邻的闲置内存,堆栈的大小可以超过这个限定。
我所遇见过的“堆饯溢出”大部分是因为使用了嵌套过程,在VB里开发递归子程序时这是
经常会碰到的问题。
可行的解决方法是自己做一个CStack的类模块,不要使用VB提供的"栈".
代码如下:
Option Explicit
Public Enum EErrorStack
eeBaseStack = 13230 ' CStack
End Enum
Private av() As Variant
Private Const cChunk = 10
Private iLast As Long, iCur As Long
Sub Push(vArg As Variant)
iCur = iCur + 1
On Error GoTo FailPush
If IsObject(vArg) Then
Set av(iCur) = vArg
Else
av(iCur) = vArg
End If
Exit Sub
FailPush:
iLast = iLast + cChunk ' Grow
ReDim Preserve av(1 To iLast) As Variant
Resume ' Try again
End Sub
Function Pop() As Variant
If iCur Then
If IsObject(av(iCur)) Then
Set Pop = av(iCur)
Else
Pop = av(iCur)
End If
iCur = iCur - 1
If iCur < (iLast - cChunk) Then
iLast = iLast - cChunk ' Shrink
ReDim Preserve av(1 To iLast) As Variant
End If
End If
End Function
Property Get Count() As Long
Count = iCur
End Property
然后把递归过程转换成用栈来模拟,不过这也不是一件简单的事。
说多了,自己看看代码上有没有什么问题吧!Top
18 楼AdamBear(亚当熊)回复于 2002-01-30 10:40:34 得分 0
“堆饯溢出”,是程序的问题,ACCESS没有64K限制、但自定义类型的变量不能超过64K.
还有一些64K限制,下面摘到MSDN:
作为变量声明的数组不能使用全部数组空间;只有数组描述符对 64K 的限制起作用。例如,在过程中声明或作为模块级声明,Dim x(1000000) As Byte。然而,如果在记录中声明了一个大的、固定大小的数组,然后将这些记录的示例声明为变量时,就会发生内存溢出。
至于“堆饯溢出”,MSDN里是这么说的:
在运行时过程中的参数和局部变量占用堆栈空间。而模块级变量和静态变量不占堆栈空间,因为它们被分配在窗体或模块的数据段中。任何被调用的 DLL 过程,在执行时都要使用堆栈。
Visual Basic 自己也使用堆栈,例如,在计算表达式时保存中间值。
Visual Basic全部可用堆栈的大小是每线程一兆字节(1MB)。然而,如果有相邻的闲置内存,堆栈的大小可以超过这个限定。
我所遇见过的“堆饯溢出”大部分是因为使用了嵌套过程,在VB里开发递归子程序时这是
经常会碰到的问题。
可行的解决方法是自己做一个CStack的类模块,不要使用VB提供的"栈".
代码如下:
Option Explicit
Public Enum EErrorStack
eeBaseStack = 13230 ' CStack
End Enum
Private av() As Variant
Private Const cChunk = 10
Private iLast As Long, iCur As Long
Sub Push(vArg As Variant)
iCur = iCur + 1
On Error GoTo FailPush
If IsObject(vArg) Then
Set av(iCur) = vArg
Else
av(iCur) = vArg
End If
Exit Sub
FailPush:
iLast = iLast + cChunk ' Grow
ReDim Preserve av(1 To iLast) As Variant
Resume ' Try again
End Sub
Function Pop() As Variant
If iCur Then
If IsObject(av(iCur)) Then
Set Pop = av(iCur)
Else
Pop = av(iCur)
End If
iCur = iCur - 1
If iCur < (iLast - cChunk) Then
iLast = iLast - cChunk ' Shrink
ReDim Preserve av(1 To iLast) As Variant
End If
End If
End Function
Property Get Count() As Long
Count = iCur
End Property
然后把递归过程转换成用栈来模拟,不过这也不是一件简单的事。
说多了,自己看看代码上有没有什么问题吧!Top
19 楼AdamBear(亚当熊)回复于 2002-01-30 10:52:07 得分 0
对不起,不知为什么发了两次。Top
20 楼jamex(1 + 1 = 爱)回复于 2002-01-30 13:23:45 得分 0
1 用Sql Server
2. 用路径名Top
21 楼feihong0233(泓)回复于 2002-01-30 13:59:00 得分 0
二进制型不就可以了,
为什么要用备注型?Top
22 楼bdzwc(bdzwc)回复于 2002-02-04 17:17:53 得分 0
问题解决,散分Top
相关问题
- 怎样创建access的备注字段
- ACCESS备注字段的读取问题
- ADO+ACCESS:如何把ACCESS中数据类型为"备注"字段的内容分行打印出来?
- Access的备注字段,用con.execute("insert into ......)提示错误说数据太长不能插入备注字段?
- 从Access对备注字段读出来要求有分段格式(即以回车为分段)[在线结帖]
- dephi中怎么在dbgrid中显示access的备注型字段
- 用什么数据类型接收Access表的备注字段
- 怎样读取access中的备注字段中的数据
- 如何update access的备注型字段(急,当天!)
- dbGrid显示不了Access数据库的备注字段




