sql server中:
1 可以用存储过程sp_Columns
2 Table1.Fields[0].Value := '';
Table.Post;
if (len(VarToStr(Table1.Fields[0].Value)) > 0 )then // char
1 可以用存储过程sp_Columns
2 Table1.Fields[0].Value := '';
Table.Post;
if (len(VarToStr(Table1.Fields[0].Value)) > 0 )then // char
解决方案 »
- DBGridEh的Column Line多行显示(包括空记录)(凭证式)
- 如何让子窗体显示在主窗体右侧,左侧是一个TreeView动态生成数据库里数据?
- 上海国家规划布局内重点软件企业 急聘 Delphi程序员!!!
- 很多很多个同类控件的使用
- 做一个三层分布式管理系统难不???
- 初学delphi,请问各位大虾,TActionList中的内容是怎么执行的,什么时候执行,谢谢
- 为什么要使用面向对象的方法?(why use OO methodology?)
- 在线等待!!!我想问一下关于查找记录。
- 连接中间层,出项“stack overflow”的错误,急!
- 请问如何对其它机器发信息?
- 再次求助。。。。。如何锁定access中的表,及如何解除锁定????
- 谁遇到过这么怪的问题?cancelbatch时竟然出错!
function tytostr(ty:tfieldtype):string;
var dt:string;
vdt:variant;
begin
vdt:=ty;
dt:=string(vdt);
result:=dt;
end;
然后找一个含有VARCHAR字段和CHAR字段的DB2表。
用以下语句。
showmessage(tytostr(table1.fieldbyname('varchar字段名').datatype));
showmessage(tytostr(table1.fieldbyname('char字段名').datatype));
从显示的数字就可以看出类型了,不过要注意,数字是以0开头的,所以显示0表示的是第一个ftunknow.显示6表示的是第七个ftfloat,就是你打出的表上的顺序。
function tytostr(ty:tfieldtype):string;
var dt:string;
vdt:variant;
begin
vdt:=ty;
dt:=string(vdt);
result:=dt;
end;
然后找一个含有VARCHAR字段和CHAR字段的DB2表。
用以下语句。
showmessage(tytostr(table1.fieldbyname('varchar字段名').datatype));
showmessage(tytostr(table1.fieldbyname('char字段名').datatype));
从显示的数字就可以看出类型了,不过要注意,数字是以0开头的,所以显示0表示的是第一个ftunknow.显示6表示的是第七个ftfloat,就是你打出的表上的顺序。
以后就可以直接用了嘛,比如char字段显示为1,表示ftstring。以后,只要判断出某DB2表的某字段的datatype=ftstring,就表示是char类型的字段了。又不是要你在编程时,到处都去用这个方法来判断。
datasize,因为有可能它们的datatype在dbgrid里是一样的。我这里没有DB2的表,所以无法试。不过我想这两个参数可能已经够了
select * from col;
由数据库服务器判断是最准确的
以下为李维书中代码,仅供参考:
function TfrmMain.GetADOXFieldType(aType : DataTypeEnum): String;
begin
case aType of //
adEmpty : Result := 'adEmpty';
adTinyInt : Result := 'adTinyInt';
adSmallInt : Result := 'adSmallInt';
adInteger : Result := 'adInteger';
adBigInt : Result := 'adBigInt';
adUnsignedTinyInt : Result := 'adUnsignedTinyInt';
adUnsignedSmallInt : Result := 'adUnsignedSmallInt';
adUnsignedInt : Result := 'adUnsignedInt';
adUnsignedBigInt : Result := 'adUnsignedBigInt';
adSingle : Result := 'adSingle';
adDouble : Result := 'adDouble';
adCurrency : Result := 'adCurrency';
adDecimal : Result := 'adDecimal';
adNumeric : Result := 'adNumeric';
adBoolean : Result := 'adBoolean';
adError : Result := 'adError';
adUserDefined : Result := 'adUserDefined';
adVariant : Result := 'adVariant';
adIDispatch : Result := 'adIDispatch';
adIUnknown : Result := 'adIUnknown';
adGUID : Result := 'adGUID';
adDate : Result := 'adDate';
adDBDate : Result := 'adDBDate';
adDBTime : Result := 'adDBTime';
adDBTimeStamp : Result := 'adDBTimeStamp';
adBSTR : Result := 'adBSTR';
//************************************************
adChar : Result := 'adChar';
adVarChar : Result := 'adVarChar';
adLongVarChar : Result := 'adLongVarChar';
adWChar : Result := 'adWChar';
adVarWChar : Result := 'adVarWChar';
adLongVarWChar : Result := 'adLongVarWChar';
//************************************************
adBinary : Result := 'adBinary';
adVarBinary : Result := 'adVarBinary';
adLongVarBinary : Result := 'adLongVarBinary';
adChapter : Result := 'adChapter';
adFileTime : Result := 'adFileTime';
adPropVariant : Result := 'adPropVariant';
adVarNumeric : Result := 'adVarNumeric';
end; // case
end;
2.寫入一個小于此長度的一個數據
3.取出該數據﹐看最后面有沒有空格即可。(有空格表示VARCHAR類型﹐否則表示CHAR類型。)
这句话我不敢苟同,这里的tfiletype只是delphi自己使用的类型,而不是只能识别名字为这些的类型,因为如果tfiletype都已经列出了varchar和char的话,我们还用得着讨论这个问题吗?任何类型,只要delphi能识别,它就会读入,然后用以上的tfiletype中的一个来代表。比如以下就是帮助中带的一个转化的例子
SQL Syntax BDE Logical Paradox dBASE
SMALLINT fldINT16 Short Numeric(6,0)
INTEGER fldINT32 Long Long
DECIMAL fldBCD BCD(32,0) Numeric(20,0)
DECIMAL(7) fldBCD BCD(32,0) Numeric(7,0)
DECIMAL(7,2) fldBCD BCD(32,2) Numeric(7,2)
NUMERIC fldFLOAT Number Double
NUMERIC(7) fldFLOAT Number Double
NUMERIC(7,2) fldFLOAT Number Double
FLOAT fldFLOAT Number Double
FLOAT(7) fldFLOAT Number Double
FLOAT(7,2) fldFLOAT Number Double
CHARACTER(10) fldZSTRING Alpha(10) Character(10)
VARCHAR(10) fldZSTRING Alpha(10) Character(10)
DATE fldDATE Date Date
BOOLEAN fldBOOL Logical Logical
BLOB(1,1) fldstMEMO Memo Memo
BLOB(1,2) fldstBINARY Binary Binary
BLOB(1,3) fldstFMTMEMO Formatted memo Memo
BLOB(1,4) fldstOLEOBJ OLE OLE
BLOB(1,5) fldstGRAPHIC Graphic Binary
TIME fldTIME Time Character(11)
TIMESTAMP fldTIMESTAMP Timestamp Datetime
MONEY fldFLOAT, fldstMONEY Money Double
AUTOINC fldINT32, fldstAUTOINC Autoincrement Autoinc
BYTES fldBYTES Bytes(1) N/A
BYTES(10) fldBYTES Bytes(10) N/A
这里粘得有点错位,你可以在delphi的local sql帮助中找到“查找data type”
begin
case frmmain.Querymain.FieldByName(fieldname).DataType of
ftString, ftMemo, ftFmtMemo, ftFixedChar, ftWideString:
begin
Result := 1; //字符型 1
end;
ftSmallint, ftInteger, ftWord,
ftAutoInc, ftLargeInt, ftArray:
begin
Result := 2; //整型2
end;
ftFloat, ftCurrency, ftBCD:
begin
Result := 3; //浮点型(含货币型)3
end;
ftDate, ftDateTime:
begin
Result := 4; //日期时间型4
end;
else
begin
Result := 0; //其他未知
end; end;
end;