Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


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 мне ???

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо