function GetRealFieldName(const TableName, FieldAlias: string): string; type TRec = record TableName, RealFieldName, FieldAlias: string; end; const S: array [0..3] of TRec = ( (TableName: 'table1'; RealFieldName: 'table1column1'; FieldAlias: '学号'), (TableName: 'table1'; RealFieldName: 'table1column2'; FieldAlias: '姓名'), (TableName: 'table2'; RealFieldName: 'table2column1'; FieldAlias: '学号'), (TableName: 'table2'; RealFieldName: 'table2column2'; FieldAlias: '姓名') ); var I: Integer; begin for I := Low(S) to High(S) do if (TableName = S[I].TableName) and (FieldAlias = S[I].FieldAlias) then begin Result := S[I].RealFieldName; Exit end; Result := FieldAlias end;
但是写SQL语句时需要一定的规则,不然会截取错误,比如截取as前面和逗号(,)后面的字符等
type
TRec = record
TableName, RealFieldName, FieldAlias: string;
end;
const
S: array [0..3] of TRec = (
(TableName: 'table1'; RealFieldName: 'table1column1'; FieldAlias: '学号'),
(TableName: 'table1'; RealFieldName: 'table1column2'; FieldAlias: '姓名'),
(TableName: 'table2'; RealFieldName: 'table2column1'; FieldAlias: '学号'),
(TableName: 'table2'; RealFieldName: 'table2column2'; FieldAlias: '姓名')
);
var
I: Integer;
begin
for I := Low(S) to High(S) do
if (TableName = S[I].TableName) and (FieldAlias = S[I].FieldAlias) then
begin
Result := S[I].RealFieldName;
Exit
end; Result := FieldAlias
end;
你是说人为的设置Grid的Title-Caption属性,然后用Caption作为查询条件?可是Grid中的列是根据数据集中的数据动态生成的
感谢你费这么打劲写代码,这样写比较死,不太灵活。Grid是动态创建的。
通过表名可以获得相应的字段名,Grid标题有Title,对应字段名就是Fields
通过循环(这里可能要用嵌套循环)进行校验,对应标题相同的就取字段名出来与之对应。代码就更简单了,只要思路清晰了,代码也就没什么神奇啦!