当前位置:主页>仓库管理软件> 列表

简繁转换 找进销存软件需求

财务软件版1楼: 这个问题我已解决,就是在工作站对ADO升级,100分还是分配
另外有个问题,如果工作站同时有简体繁体操作系统如何解决,胜天软件有个办法进行繁简转换,但是对于数据不行,只能是界面,,请问如何解决?

2楼: 如果 局域网络的工作站同时有简体繁体操作系统如何解决,胜天软件有个办法进行繁简转换,但是对于数据不行,只能是界面,,请问如何解决?在不同的工作站有的输入简体有的输入繁体可以做到吗,用控件好象也不行啊,本人花了几天时间了请高手帮忙. 如简单进销存管理软件

3楼: 哎,你取出的时候转换一下不就完了嘛.

4楼: benhacker:
多谢.什么时候取,什么时候转换,我刚在网上查了半天,好象同时有简\繁体工作站没那么容易,如能解决,再加200分,拜托各位大虾

5楼: 帮你顶。

6楼: 你该不会都是要控件实现的数据库查询吧.就没有一点代码的东西.比如rs("title")这些东西?

财务软件版7楼: 给你看看我的例子.这是我以前的一个数据库读取例子,我在里面给你加了GbtoBig5转换,看注释


unit Unit1;
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, ComObj, Grids;
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
var AConnection,ARecordSet:variant;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
i := 0;
ARecordSet:=CreateOleObject(''ADODB.RecordSet'');
ARecordSet.open( ''Select * from userinfo'',AConnection,3,3);
StringGrid1.RowCount := ARecordSet.RecordCount+1;
StringGrid1.ColCount := 2;
while not ARecordSet.eof do begin
StringGrid1.Cells[0,i]:= GbtoBig5(ARecordSet.Fields[''name''].Value); //看到没,就是这里,把名字转换成繁体了
StringGrid1.Cells[1,i]:= GbtoBig5(ARecordSet.Fields[''pass''].Value);
i := i+1;
ARecordSet.movenext;
end;
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
AConnection:=createoleobject(''ADODB.Connection'');
AConnection.Open(''Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb;Persist Security Info=False'');
end;

end.

8楼: benhacker:
谢谢,1.程序的许多地方(太多了)都要改了,
2.在繁体工作站,也可能输入一二个简体字,也要一个一个字符的判断,

9楼: 穿插简繁体你除了一个一个去判断还有更好的办法吗,哎.

10楼: function UnicodeEncode(Str:string;CodePage:integer):WideString;
var
Len:integer;
begin
Len:=Length(Str)+1;
SetLength(Result,Len);
Len:=MultiByteToWideChar(CodePage,0,PChar(Str),-1,PWideChar(Result),Len);
SetLength(Result,Len-1);
end;

function UnicodeDecode(Str:WideString;CodePage:integer):string;
var
Len:integer;
begin
Len:=Length(Str)*2+1; //one for #0
SetLength(Result,Len);
Len:=WideCharToMultiByte(CodePage,0,PWideChar(Str),-1,PChar(Result),Len,nil,nil);
SetLength(Result,Len-1);
end;

function Gb2Big5(Str:string):string;
begin
SetLength(Result,Length(Str));
LCMapString(GetUserDefaultLCID,LCMAP_TRADITIONAL_CHINESE,
PChar(Str),Length(Str),
PChar(Result),Length(Result));
Result:=UnicodeEncode(Result,936);
end;

function Big52Gb(Str:string):string;
begin
Str:=UnicodeDecode(UnicodeEncode(Str,950),936);
SetLength(Result,Length(Str));
LCMapString(GetUserDefaultLCID,LCMAP_SIMPLIFIED_CHINESE,
PChar(Str),Length(Str),
PChar(Result),Length(Result));
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(Gb2Big5(''WINNER转给你看,转一圈给50分''));
end;

end.

11楼: 谢谢:
1。benhacker,mywinner0101二位的代码对我都有帮助,昨晚基本上做出来了,
2。如何追加积分,请告知
3。顺便请教一下,如何判断操作系统是简体还是繁体

12楼: 本以为已经解决,实际情况是:
1.在简体WIN2000上正常,可以显示繁体,简体,包括DBGRID,而在繁体WIN98,WIN2000工作站上上仍然显示乱码
本人的开发环境是简体WIN2000,英文SQL2000,请再出手本人另外开了帖可以在这里解决也可以 如进销存软件需求