100分求答案!!数据窗口-长文本-图片!!

csdnxw 2003-05-10 11:49:19
经过了很长时间,还是没有搞出来!
很着急!
请大虾帮忙! 我的邮箱:xw_max@163.com

我使用PB 8 + SQL SERVER 2000 我现在遇到的问题:
1.不能在数据窗口中往数据库中添加长文本,数据窗口中的
文本编辑框能够容纳的字数太少,不能满足我的要求--在数据库
一个字段中至少能够存储1万个字符。
2.如果在窗口中实现这个功能,可以在窗口中的edit控件中灌入
2万多个字符,但是不能够把数据插入到数据库中。
3.最后一个问题,也是我一直没有解决的问题,用数据窗口的
ole db显示图像。虽然可以通过编程在窗口中通过picture控件
实现这个功能,但是我想如果用在数据窗口中使用ole db来实现
这个功能,要方便的多了--易于使用、便于编辑、实现打印时很
方便、对使用者没有太高的计算机要求等等。

各位高手,如果有谁能帮助我解决这三个问题,必将高分相送!
先放上100分,不够再加!

我现在考虑是不是可以在blob字段中放置长文本,
blob和text不都是用指针来指向数据的存储么?
有什么区别么?我现在头都晕了,在csdn找了n天,
还没有结果,自己尝试有搞不出来,真郁闷!!
200分大散,不够再加!!

下面是数据库结构:
CREATE TABLE [dbo].[img] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[content] [image] NULL ,
[des] [char] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

CREATE TABLE [dbo].[btext] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[content] [binary] (10) NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[ltext] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[content] [ntext] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
...全文
36 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bee0611 2003-09-13
  • 打赏
  • 举报
回复
对于长文本的问题,在updateblob之前先用commit保存数据,再用updateblob即可.此外,selectblob可以取得该字段的值.
csdnxw 2003-09-07
  • 打赏
  • 举报
回复
用Bitmap也可以啊!
用dw_1.describe.....
你查查吧,挺简单的。

谢谢各位光临!
结贴
bachelor1001 2003-05-16
  • 打赏
  • 举报
回复
!!
joss 2003-05-16
  • 打赏
  • 举报
回复
关注问题!
数据窗口显示图片我不用OLE啊!
用bitmap不行吗?
lchming2002 2003-05-16
  • 打赏
  • 举报
回复
如果在数据库中长文本字体为TEXT类型,建立数据窗口时就可以写长文本。如果为VARCHAR那么建立数据窗口时,就只能写入255个字符。另外编程过程中存取图片可以有几种方法,
第一:在数据库中存储文件路径。在PB的database画板使该字段的picture属性为TRUE,
第二:在数据库中建立数据类型为image的字段,用picture控件存储。
第三:在数据库中建立数据类型为image的字段,用ole存储。在数据窗口中添加OLE控件,然后设置其属性。将每个属性弄清楚,填好就可以了。
bomber2001 2003-05-16
  • 打赏
  • 举报
回复
String ls_person_id, ls_FullFileName, ls_FileName
Int li_file_open_return_value
Int li_num
Int li_i
Int li_if_have_ph
Long ll_file_length
Blob lb_full_photo
Blob lb_photo,lb_blob


IF dw_person.GetRow () <=0 THEN Return
ls_person_id = dw_person.GetItemString ( dw_person.GetRow (), 'id' )
if isnull(ls_person_id) or ls_person_id = '' then
messagebox('信息提示:','数据为保存,请先保存数据!')
return
end if
SELECTBLOB TUPIAN INTO :lb_Photo FROM SBT_BIANDIANSHEBEI_PICTURE WHERE ID = :ls_person_id ;

IF NOT IsNull ( lb_Photo ) And len(lb_Photo)> 1 THEN
p_photo.Visible = TRUE
SetPicture ( p_photo, lb_Photo )
IF MessageBox ( '提 示', '是否重新选择该台设备的照片?', Question!, OkCancel!, 2 ) = 2 THEN RETURN
END IF

p_Photo.Visible = FALSE

//选择照片文件
IF GetFileOpenName ( "选择图片", ls_FullFileName, ls_FileName, "bmp", "BMP FILES (*.bmp),*.bmp," &
+ "Gif Files (*.gif),*.gif," + "Jpg Files (*.jpg),*.jpg") = 0 THEN
IF NOT IsNull ( lb_Photo ) THEN
p_photo.Visible = TRUE
SetPicture ( p_photo, lb_Photo )
RETURN
END IF
END IF

//获取当前选定的照片文件大小
ll_File_Length = FileLength( ls_FullFileName )
//打开当前照片文件
li_file_open_return_value = FileOpen ( ls_FullFileName, StreamMode! , Read!, LockRead!)
Long loops,i
//如果成功打开
IF li_file_open_return_value > 0 THEN
IF ll_File_Length > 32765 THEN
IF Mod(ll_File_Length, 32765) = 0 THEN
loops = ll_File_Length/32765
ELSE
loops = (ll_File_Length/32765) + 1
END IF
ELSE
loops = 1
END IF
FOR i = 1 to loops
//将照片读取到共享Bolb变量sb_photo中
FileRead (li_file_open_return_value,lb_blob )
//将所有的Bolb变量相加
lb_full_photo = lb_full_photo + lb_blob
NEXT
//关闭照片文件
FileClose( li_file_open_return_value )

//将Blob照片变量更新到表中
UPDATEBLOB SBT_BIANDIANSHEBEI_PICTURE SET TUPIAN = :lb_full_photo where ID = :ls_person_id ;
IF SQLCA.SQLCODE <> 0 THEN
MessageBox( '提 示', '数据操作失败,请与系统管理员联系' )
ROLLBACK USING SQLCA ;
ELSE
COMMIT USING SQLCA ;
p_photo.Visible = TRUE
SetPicture( p_photo, lb_full_photo )
END IF
END IF
tchatcha 2003-05-16
  • 打赏
  • 举报
回复
http://www.sybase.com.cn/cn/content/goto.jsp?resID=0
有例子
csdnxw 2003-05-16
  • 打赏
  • 举报
回复
哈哈,该问题我已经解决了,有空把解决方法写出来。
freshman113 2003-05-11
  • 打赏
  • 举报
回复
1.不能在数据窗口中往数据库中添加长文本,数据窗口中的
文本编辑框能够容纳的字数太少,不能满足我的要求--在数据库
一个字段中至少能够存储1万个字符。
2.如果在窗口中实现这个功能,可以在窗口中的edit控件中灌入
2万多个字符,但是不能够把数据插入到数据库中。

用BLOB比较好,TEXT类型数据,PB检索时好象只能检索4096个字符,用BLOB类型可以在窗口上MLE控件显示及保存:
Blob B

B = Blob(mle_1.text)

UPDATEBLOB ........



888888888888 2003-05-11
  • 打赏
  • 举报
回复
关注
csdnxw 2003-05-11
  • 打赏
  • 举报
回复
888888888888(888888888888),你给我点意见,我才能方分!!
freshman113(逍遥子) ,怎么插入数据呀?
UPDATEBLOB ........只能修改。。
888888888888 2003-05-11
  • 打赏
  • 举报
回复
赶快放分

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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