Acceso a los campos de la tabla

En el siguiente procedimiento por medio de un componente convencional de connection a las bases de datos SQLite en Delphi XE3 ejecuto una consulta SQL a una database, que contiene campos con nombres idénticos de diferentes tablas. Luego me dirijo a este campo a través de un alias

procedure CreationListOfFields(SQLConn: TSQLConnection; DBSchema : TDBSchemaSpec); var NameField : TField; PositionField : TField; DescriptionField : TField; CanInputField : TField; CanEditField : TField; ShowInGridField : TField; ShowInDetailsField : TField; IsMeanField : TField; AutocalculatedField : TField; RequinetworkingField : TField; Name1 : TField; Name2 : TField; begin SQLConn.Execute('select f.id, f.position, f.name, f.description, f.can_input, ' +' f.can_edit, f.show_in_grid, f.show_in_details, f.is_mean, f.autocalculated, f.requinetworking, tables.name tablename, domains.name domainname' +' from fields f left join tables on f.table_id=tables.id ' +' left join domains on f.domain_id=domains.id order by tables.name, domains.name ', nil, results); if not results.IsEmpty then begin results.First; Name1:=results.FieldByName('tablename'); Name2:=results.FieldByName('domainname'); lastTable:=Name1.AsString; TableSpec:=TTableSpec(DBSchema.Tables.FindComponent(lastTable)); lastDomain:=Name2.AsString; DomainSpec:=TDomainSpec(DBSchema.Domains.FindComponent(lastDomain)); NameField:=results.FieldByName('name'); PositionField:=results.FieldByName('position'); DescriptionField:=results.FieldByName('description'); CanInputField:=results.FieldByName('can_input'); CanEditField:=results.FieldByName('can_edit'); ShowInGridField:=results.FieldByName('show_in_grid'); ShowInDetailsField:=results.FieldByName('show_in_details'); IsMeanField:=results.FieldByName('is_mean'); AutocalculatedField:=results.FieldByName('autocalculated'); RequinetworkingField:=results.FieldByName('requinetworking'); while not results.Eof do begin if (Name1.AsString<>lastTable) then begin lastTable:=Name1.AsString; TableSpec:=TTableSpec(DBSchema.Tables.FindComponent(lastTable)); end; if (Name2.AsString<>lastDomain) then begin lastDomain:=Name2.AsString; DomainSpec:=TDomainSpec(DBSchema.Domains.FindComponent(lastDomain)); end; FieldSpec:=TFieldSpec.Create(TableSpec.Fields); FieldSpec.Setup( DomainSpec, PositionField.AsInteger, NameField.AsString, DescriptionField.AsString, FieldToBoolean(CanInputField),FieldToBoolean(CanEditField), FieldToBoolean(ShowInGridField), FieldToBoolean(ShowInDetailsField), FieldToBoolean(IsMeanField),FieldToBoolean(AutocalculatedField), FieldToBoolean(RequinetworkingField)); TComponent(FieldSpec).Name:=NameField.AsString; TableSpec.Fields.InsertComponent(FieldSpec); results.Next; end; end; end; 

Pero por una llamada de este procedimiento como resultado, recibo el post Field 'tablename' no encontrado. ¿Cómo dirigir a los campos con nombres repetidos que no hubo problemas? ('name_1' y 'name _2' no se acercan, al depurar descubrí que los valores apropiados están vacíos y, como resultado, tuve una pregunta sobre Violación de acceso en la dirección 00822135 en el module 'GUI.exe'. dirección 00000040 ).

Tienes un error tipográfico (tablemame en lugar de tablename):

 [...], f.autocalculated, f.requinetworking, tables.name table->m<-ame, domains.name domainname' +' from fields f left join tables on f.table_id=tables.id ' [...] 
    Intereting Posts