Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.30;
Скачать: CL | DM;

Вниз

Помогите переделать функцию из фокса в дельфи   Найти похожие ветки 

 
scorpio ©   (2008-02-27 18:19) [0]

Добрый вечер. Помогите плиз функцию переделать, или подскажите какой нибудь другой способ, как мне сделать аналогичное:
*
процедура инсерта курсора. параметры
* 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 мне ???


 
Johnmen ©   (2008-02-27 20:13) [1]


> Как можно упростить INSERT и UPDATE мне ???

Указывать только необходимые/измененные поля.


 
scorpio_   (2008-02-27 22:33) [2]

И как ??
Откуда я могу знать кто поменяет и что в 100 ячейках формы ??

А если новая запись ?? У меня один инсерт будет строк на 20, не говоря о том, что будет, кода придет время изменений в структуре таблицы.


 
Johnmen ©   (2008-02-27 23:03) [3]

Пользуй TTable (BDE), и не будешь видеть описанного ужаса, на который ты сам себя обрёк.

ЗЫ
100 полей говорит только о проблемах в консерватории.


 
Amoeba ©   (2008-02-27 23:12) [4]


> Используется много полей в таблице, доходит до 100

Ну просто пипец! Явно, что что-то не так в датском королевстве.


 
Anatoly Podgoretsky ©   (2008-02-28 01:32) [5]

> scorpio_  (27.02.2008 22:33:02)  [2]

Не пугай, мы считаем не строками, а страницами.


 
Германн ©   (2008-02-28 01:55) [6]


> не говоря о том, что будет, кода придет время изменений
> в структуре таблицы.

Это новая интерпретация Армагеддона?


 
scorpio ©   (2008-02-28 08:29) [7]

Обидно что нельзя себе упростить жизнь. Придется все писать ручками.



Страницы: 1 вся ветка

Текущий архив: 2008.03.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.06 c
15-1202832081
Kolan
2008-02-12 19:01
2008.03.30
Гайды, книги, статьи по созданию touch screen приложений&amp;#133


2-1204638436
Тфьу
2008-03-04 16:47
2008.03.30
Как перекинуть Variant в TBitmap?


2-1204457589
<code>
2008-03-02 14:33
2008.03.30
Подскажите как рисовать на форме без мерцания?


15-1203344856
Dmitry S
2008-02-18 17:27
2008.03.30
Еще один идиотский вопрос:)


2-1204446203
махс
2008-03-02 11:23
2008.03.30
const в параметрах