![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите переделать функцию из фокса в дельфи
scorpio © (2008-02-27 18:19:00)Добрый вечер. Помогите плиз функцию переделать, или подскажите какой нибудь другой способ, как мне сделать аналогичное:
*
процедура инсерта курсора. параметры
* 1. Имя локального курсора
* 2. Имя таблицы сервера
LPARAMETERS pCursor, pOraTable
LOCAL arData, arField, sData, sField, c, sqlcmd, result
sData=''
sField=''
SELECT (pCursor)
DIMENSION arField[1]
=AFIELDS(arField)
DIMENSION arData[ALEN(arField,1)]
SCATTER TO arData
*SET STEP ON
FOR c=1 TO ALEN(arField,1)
sField = sField + IIF(c>1,',','') + arField[c,1]
sData = sData + IIF(c>1,',','') + '?arData['+LTRIM(STR(c,3,0))+']'
IF NOT ISNULL(arData[c])
DO CASE
CASE TYPE("arData[c]") == "C"
IF EMPTY(arData[c])
arData[c] = NULL
ELSE
arData[c] = ALLTRIM(arData[c])
ENDIF
CASE TYPE("arData[c]") == "N"
IF arData[c] = 0
arData[c] = NULL
ENDIF
CASE TYPE("arData[c]") == "D"
IF EMPTY(arData[c])
arData[c] = NULL
ENDIF
ENDCASE
ENDIF
ENDFOR
sqlcmd='INSERT INTO '+pOraTable+' ('+sField+') VALUES ('+sData+')'
result = SQLEXEC(con_handle, sqlcmd)
IF result < 1
MESSAGEBOX('Ошибка записи данных. '+pOraTable+CHR(13)+CHR(13)+sqlcmd,16,'')
RETURN .F.
ELSE
WAIT 'Данные сохранены' WINDOW NOWAIT
RETURN .T.
ENDIF
Анологичная есть для udate
Цель: Делаем запрос на таблицу любую например li, получаем курсор с структурой этой таблицы как минимум, либо с одной записью. Затем в этот курсор вносим изменения и далее функция его заливает на сервер.
Смысл реализации: Используется много полей в таблице, доходит до 100, а писать INSERT INTO li (...) values () , а потом еще и такой адэйт, тяжко. Да и форм тоже очень много, особенно хреново когда начинаются переименования добавления полей.
Как можно упростить INSERT и UPDATE мне ???
scorpio (2008-02-28 08:29:00) [1]Обидно что нельзя себе упростить жизнь. Придется все писать ручками.
Германн (2008-02-28 01:55:00) [2]
> не говоря о том, что будет, кода придет время изменений
> в структуре таблицы.
Это новая интерпретация Армагеддона?
Anatoly Podgoretsky (2008-02-28 01:32:00) [3]> scorpio_ (27.02.2008 22:33:02) [2]
Не пугай, мы считаем не строками, а страницами.
Amoeba (2008-02-27 23:12:00) [4]
> Используется много полей в таблице, доходит до 100
Ну просто пипец! Явно, что что-то не так в датском королевстве.
Johnmen (2008-02-27 23:03:00) [5]Пользуй TTable (BDE), и не будешь видеть описанного ужаса, на который ты сам себя обрёк.
ЗЫ
100 полей говорит только о проблемах в консерватории.
scorpio_ (2008-02-27 22:33:00) [6]И как ??
Откуда я могу знать кто поменяет и что в 100 ячейках формы ??
А если новая запись ?? У меня один инсерт будет строк на 20, не говоря о том, что будет, кода придет время изменений в структуре таблицы.
Johnmen (2008-02-27 20:13:00) [7]
> Как можно упростить INSERT и UPDATE мне ???
Указывать только необходимые/измененные поля.