[vfp9 / oracle] remote view - ошибка (наверное в нём)
От: Arks Россия  
Дата: 21.09.07 16:53
Оценка:
Такая вот странная ошибка получается...
Прога БД на oracle, а клиент — vfp9
В программе была таблица laccount: (PK) id_account, money, id_actype, id_client
id_account была и первичным ключом и смысловым полем. Понадобилось разделить их, сделал так (напрямую в oracle):
(PK) id_account, account_num, money, id_actype, id_client.
Далее заполнил новый столбец и приступил к изменению клиента.
Добавил в отображаемые (используемые) поля таблиц в remote view (r_laccount) новое, в итоге получилось это:
3 таблицы — основная laccount и две вспомогательных actype (перв. ключ id_actype), client (id_client).
связи innerjoin от основной к первичным ключам доп. таблиц.

Далее в форме просмотра добавил новый столбец. Здесь всё нормально. Проблема возникла, когда стал изменять форму корректировки:
У меня id_account сначала был полем Text (Text1) с ReadOnly = .F. Изменил на .T., изменил ControlSource с r_laccount.id_account на r_laccount.account_num.
Но ничего не меняется: когда вызываешь эту форму для изменения или добавления записи, Text1 становится readonly и в него загружается текущее (либо новое по автоинкременту, если добавляется новая запись) значение первичного ключа.
Почему это происходит? Как можно исправить?

Заранее спасибо.

Вот, наверное это оно (remote view изнутри):

SELECT Laccount.ID_ACCOUNT, Laccount.MONEY, Laccount.ACCOUNT_NUM, Actype.NAME, Client.FIO, Laccount.ID_CLIENT, Laccount.ID_ACTYPE FROM  POWT_41KAA.LACCOUNT Laccount  INNER JOIN POWT_41KAA.ACTYPE Actype  ON  Laccount.ID_ACTYPE = Actype.ID_ACTYPE  INNER JOIN POWT_41KAA.CLIENT Client  ON  Laccount.ID_CLIENT = Client.ID_CLIENT ORDER BY Laccount.ACCOUNT_NUM  
    
  DBSetProp(ThisView,"View","SendUpdates",.T.)  
  DBSetProp(ThisView,"View","BatchUpdateCount",1)  
  DBSetProp(ThisView,"View","CompareMemo",.T.)  
  DBSetProp(ThisView,"View","FetchAsNeeded",.F.)  
  DBSetProp(ThisView,"View","FetchMemo",.T.)  
  DBSetProp(ThisView,"View","FetchSize",100)  
  DBSetProp(ThisView,"View","MaxRecords",-1)  
  DBSetProp(ThisView,"View","Prepared",.F.)  
  DBSetProp(ThisView,"View","ShareConnection",.F.)  
  DBSetProp(ThisView,"View","AllowSimultaneousFetch",.F.)  
  DBSetProp(ThisView,"View","UpdateType",1)  
  DBSetProp(ThisView,"View","UseMemoSize",255)  
  DBSetProp(ThisView,"View","Tables","POWT_41KAA.LACCOUNT,POWT_41KAA.ACTYPE,POWT_41KAA.CLIENT")  
  DBSetProp(ThisView,"View","WhereType",3)  
    
  DBSetProp(ThisView+".id_account","Field","DataType","N(20)")  
  DBSetProp(ThisView+".id_account","Field","UpdateName","POWT_41KAA.LACCOUNT.ID_ACCOUNT")  
  DBSetProp(ThisView+".id_account","Field","KeyField",.T.)  
  DBSetProp(ThisView+".id_account","Field","Updatable",.F.)  
    
  DBSetProp(ThisView+".money","Field","DataType","B(2)")  
  DBSetProp(ThisView+".money","Field","UpdateName","POWT_41KAA.LACCOUNT.MONEY")  
  DBSetProp(ThisView+".money","Field","KeyField",.F.)  
  DBSetProp(ThisView+".money","Field","Updatable",.T.)  
    
  DBSetProp(ThisView+".account_num","Field","DataType","B(2)")  
  DBSetProp(ThisView+".account_num","Field","UpdateName","POWT_41KAA.LACCOUNT.ACCOUNT_NUM")  
  DBSetProp(ThisView+".account_num","Field","KeyField",.F.)  
  DBSetProp(ThisView+".account_num","Field","Updatable",.T.)  
    
  DBSetProp(ThisView+".name","Field","DataType","C(100)")  
  DBSetProp(ThisView+".name","Field","UpdateName","POWT_41KAA.ACTYPE.NAME")  
  DBSetProp(ThisView+".name","Field","KeyField",.F.)  
  DBSetProp(ThisView+".name","Field","Updatable",.T.)  
    
  DBSetProp(ThisView+".fio","Field","DataType","C(100)")  
  DBSetProp(ThisView+".fio","Field","UpdateName","POWT_41KAA.CLIENT.FIO")  
  DBSetProp(ThisView+".fio","Field","KeyField",.F.)  
  DBSetProp(ThisView+".fio","Field","Updatable",.T.)  
    
  DBSetProp(ThisView+".id_client","Field","DataType","N(20)")  
  DBSetProp(ThisView+".id_client","Field","UpdateName","POWT_41KAA.LACCOUNT.ID_CLIENT")  
  DBSetProp(ThisView+".id_client","Field","KeyField",.F.)  
  DBSetProp(ThisView+".id_client","Field","Updatable",.T.)  
    
  DBSetProp(ThisView+".id_actype","Field","DataType","N(20)")  
  DBSetProp(ThisView+".id_actype","Field","UpdateName","POWT_41KAA.LACCOUNT.ID_ACTYPE")  
  DBSetProp(ThisView+".id_actype","Field","KeyField",.F.)  
  DBSetProp(ThisView+".id_actype","Field","Updatable",.T.)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.