|
|
|
Кто как сохраняется ?
|
|||
|---|---|---|---|
|
#18+
Есть небольшая проблема, проект сетевой вроде б как, Визуал Фокс 8 собственно проблема сохранения, есть формочка в нее пользователь вбивает данные нажимает на сохранить и происходит сброс инфы в базу примерно так SELECT table1 SET ORDER TO idtable1 IF LOCK("0","table1") CALCULATE MAX(table1.idtable1) TO max_idtable1 IN table1 SCATTER MEMVAR BLANK m.idtable1=max_idtable1+1 m.fam=ALLTRIM(ThisForm.PageFrame1.Page1.Text1.Value) m.naim=ALLTRIM(ThisForm.PageFrame1.Page1.Text2.Value) m.otch=ALLTRIM(ThisForm.PageFrame1.Page1.Text3.Value) APPEND BLANK GATHER MEMVAR ENDIF UNLOCK RECORD 0 SELECT table2 IF LOCK("0","table2") SCATTER MEMVAR BLANK m.idtable2=max_idtable1+1 m.strana=ALLTRIM(ThisForm.PageFrame1.Page1.Text7.Value) m.rayon=ALLTRIM(ThisForm.PageFrame1.Page1.Text8.Value) m.oblast=ALLTRIM(ThisForm.PageFrame1.Page1.Text9.Value) APPEND BLANK GATHER MEMVAR ENDIF UNLOCK RECORD 0 SELECT cur_1 replace ALL cur_1.id WITH max_idtable1+1 SELECT table3 APPEND FROM cur_1.dbf for !DELETED() и естественно таких таблиц куча , у меня их примерно 10 сама проблема состоит в скорости сохранения данных, мож кто поделиться опытом по быстродействию ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 08:04:33 |
|
||
|
Кто как сохраняется ?
|
|||
|---|---|---|---|
|
#18+
Мда.... Позвольте полюбопытствовать, а откуда взялся такой код сохранения, уж очень он напоминает Fox 2.х Если совсем короткко, то 1. Сделать буфферизацию таблиц 2. Привязать контролы на форме к источникам данных (таблицам) 3. Отказаться от LOCK() и иже с ними 4. Для сохранения данных использовать BEGIN/END/ROLLBACK TRANSACTION, TABLEUPDATE() 5. Для получения первичных ключей использовать идеологию NewID, а так же ограничения PRIMARY/CANDIDAT/FOREIGN KEY поиск здесь и на foxclub.ru по ключевым словам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 09:06:38 |
|
||
|
Кто как сохраняется ?
|
|||
|---|---|---|---|
|
#18+
а можно примерчик или что-нибудь, ну более подробенее и разъяснительнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 09:50:31 |
|
||
|
Кто как сохраняется ?
|
|||
|---|---|---|---|
|
#18+
Hi ВладикК! Схема LOCK("0") + CALCULATE MAX() (или чаще SELECT MAX(*)) вообще будет работать только при том условии, что поле по которому идёт поиск максимума НИКОГДА не будет изменяться. Если же такая вероятность существует, то придётся ужесточать, и заменять LOCK("0") на FLOCK() А вообще действительно это идеология позавчерашнего дня - слушай что говорит PaulWist :) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2005, 00:39:33 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1592974]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 390ms |

| 0 / 0 |
