table['字段']
table.fieldbyname('字段')
table.fieldvalues['字段']
这三种方法想必大家都用过,我在网上也查找了一些关于三者的资料,
有人说table['字段']简短、扩充性好,table.fieldvalues['字段']好是borland
推荐的使用方法,table.fieldbyname('字段')过时了等。
我在使用中也有这方面的感觉。
在我有一个问题不太明白, 在用table.fieldbyname('字段')的时候,字段值可以
变换类型,如table.fieldbyname('字段').asstring,
还有一点,在给一个变量赋值的时候,用table.fieldvalues['字段']的话,
如果字段值为空则会出错,而用table.fieldbyname('字段').asstring将会得到一个
空值,从而不会弹出错误,我不知道为什么table.fieldbyname('字段')这种方法不好,谁能帮我解释一下吗?
谢了!
table.fieldbyname('字段')
table.fieldvalues['字段']
这三种方法想必大家都用过,我在网上也查找了一些关于三者的资料,
有人说table['字段']简短、扩充性好,table.fieldvalues['字段']好是borland
推荐的使用方法,table.fieldbyname('字段')过时了等。
我在使用中也有这方面的感觉。
在我有一个问题不太明白, 在用table.fieldbyname('字段')的时候,字段值可以
变换类型,如table.fieldbyname('字段').asstring,
还有一点,在给一个变量赋值的时候,用table.fieldvalues['字段']的话,
如果字段值为空则会出错,而用table.fieldbyname('字段').asstring将会得到一个
空值,从而不会弹出错误,我不知道为什么table.fieldbyname('字段')这种方法不好,谁能帮我解释一下吗?
谢了!
解决方案 »
- 关于怎么学习delphi,各位前辈给点意见呗
- 多个ocx 与inf文件
- 为什么我反复执行下面的代码后会不断的吃内存,我发誓绝对Free了.
- 求一个简单实用DELPHI程序打包工具,用了一个打包工具出现下面问题
- 如何得到某字段的最大值.
- 我想得到HTTP服务器上一个文件的大小,请问如何获得?
- 如何的控件动态生成控件名称是变量的控件?
- 再开一帖,关于DLL共享数据的问题。顶者有分。大龙驹,快进来看看吧:)
- 请问在delphi中包含Shlobj.h的头文件是那个,谢谢!
- 菜鸟问题:为什么不能在窗体的Create事件中访问其他窗体的变量????
- 关于线程问题,请教各位高手
- 关于当鼠标移动到标签上面改变颜色的问题
table['字段']
和
table.fieldvalues['字段']
可以不用考虑返回的类型
前提是不能为空:)
begin
Result := FindField(FieldName);
if Result = nil then DatabaseErrorFmt(SFieldNotFound, [FieldName], Self);
end; property FieldValues[const FieldName: string]: Variant read GetFieldValue write SetFieldValue; default;
const Value: Variant);
var
I: Integer;
Fields: TList;
begin
if Pos(';', FieldName) <> 0 then
begin
Fields := TList.Create;
try
GetFieldList(Fields, FieldName);
for I := 0 to Fields.Count - 1 do
TField(Fields[I]).Value := Value[I];
finally
Fields.Free;
end;
end else
FieldByName(FieldName).Value := Value;
end;
var
I: Integer;
Fields: TList;
begin
if Pos(';', FieldName) <> 0 then
begin
Fields := TList.Create;
try
GetFieldList(Fields, FieldName);
Result := VarArrayCreate([0, Fields.Count - 1], varVariant);
for I := 0 to Fields.Count - 1 do
Result[I] := TField(Fields[I]).Value;
finally
Fields.Free;
end;
end else
Result := FieldByName(FieldName).Value
end;
其他的就不帖了,在DB的TDataSet内
你可以看到table['字段']就是调用table.fieldvalues['字段'],而table.fieldvalues['字段']又调用FieldByName,不同的是返回的类型。
2 按照teamB的建议,最好不用astring等会引起空值,用asvariant
3 有啊
Delphi syntax:
function VarToStrDef(const V: Variant; const ADefault: string): string;