Показать сообщение отдельно
Старый 09.04.2003, 12:42   #2  
Alex_V is offline
Alex_V
Участник
 
159 / 10 (1) +
Регистрация: 19.02.2003
помимо имени поля тебе надо в этом случае передавать ссылку на таблицу в которую хочешь записать. В общем решение может быть следующим:

//------------определение ф-ции---------------------------------------------------------------
WriteFileld(VAR RecRef : RecordRef, FieldNo : Integer; Value : Text[30])
{
FldRef := RecRef.FIELD(FieldNo);
FldRef.VALUE := Value; //локальная переменная типа FieldRef
RecRef.MODIFY; //ссылка на таблицу куда пишем

//либо для вставки новой записи:
// FldRef := RecRef.FIELD(FieldNo);
// RecRef.INIT;
// FldRef.VALUE := Value;
// RecRef.INSERT;
}

//---------------пример вызова-------------------------------------------------------------------
DestTable.FIND('-');
RecRef.GETTABLE(DestTable); //RecRef - переменная типа RecordRef
WriteFileld(RecRef, DestTable.FIELDNO(SurName), VarText2);
//номер поля также можно узнать из таблицы Field
//в данном случае WriteFileld запишет значение в уже существующую запись(первую)
//--------------------------------------------------------------------------------------------------------

НО естественно перед присваиванием полю значения необходимо знать тип этого поля -то есть перед FldRef.VALUE := Value необходимо проанализировать тип поля. Это можно сделать заюзав таблицу Field по ключу таблицы куда ты пишешь значение
пример:

Field.TableNo := TableNo;
Field."No," := FieldNo;
//либо Field.FieldName := FieldName;

IF Field.FIND('-') THEN
CASE Field.Type OF
Field.Type::Code :
BEGIN
........//........в зависимости от типа делать преобразование
END;
-----//-------
END

вот в общем и весь подход.