|
|
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
Sergej_S FoXXX я досих пор делал так ... ... 3. при добавлении записи делаю requery что равносильно select * from на скл Тянуть всю таблицу можно только в НЕБОЛЬШИХ проектах. В принципе, НЕТ необходимости после добавления строки тянуть таблицу назад в фокс. Я делаю так (без Identity): вычисляю значение уникального поля, прописываю в фоксе в соотв. поле курсора и делаю TableUpdate(). В фоксе у меyя строка есть. На SQL Server`е после TableUpdate() у тоже строка появилась. Зачем тянуть? Здесь, конечно начинаются извращения, чтобы с момента вычисления уникального поля и TableUpdate() не всунулся со своим инсертом другой юзер. Тут можно много нагородить и решить эту проблему, но я так понял, что "Большой Брат" для этого и придумал Identity. вью параметеризированный!!! вам это ни очем не говорит? это значит что вся база на фокс не тянется, а только та часть что соответствует параметру, а вместе с ней и новый id.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 15:16 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
Sergej_STo: Pavel_t: Судя по этому куску кода в конце примера (проверить не могу, у меня VFP8): Код: plaintext 1. 2. 3. 4. 5. у меня девятка, я уже писал, все проверил, в курсоре не отражается последний id... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 15:17 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
и вообще не понятно как вы в фоксе вычисляете id если этим занимается SQL?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 15:18 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
>и вообще не понятно как вы в фоксе вычисляете id если этим занимается SQL?? тяну SQLEXEC`ом: select 1+MAX(поле) as id_ FROM ... (для int) или select newid() as id_ FROM ... (для char(36)) работает, хотя и не лучший вариант. >вью параметеризированный!!! вам это ни очем не говорит? это значит что вся база на фокс не тянется согласен, так получше, но мне такой вариант все-равно не нравится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 16:20 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
Всё боится времени to Sergej_S из представленного примера попробую расписать действия ---- добавляем в созданную таблицу 2 записи для того чтоб что-то было SQLEXEC(nAutoRefreshConn ,"INSERT INTO #CAAutoRefreshDemo (f_int_unique,f_varchar) VALUES (1,'demo1')") SQLEXEC(nAutoRefreshConn ,"INSERT INTO #CAAutoRefreshDemo (f_int_unique,f_varchar) VALUES (2,'demo1')") SET PROCEDURE TO (PROGRAM()+".PRG") ---создаём и открываем курсор * use this code to create the cursor oca=CREATEOBJECT("CAAutoRefreshDemo") IF NOT oca.AUTOOPEN() =AERROR(AERR) LIST MEMORY LIKE AERR * ENDIF --- просматриваем BROWSE если изменяем значения в f_varchar то припереходе на другую запись или tableupdate автоматически изменяется поле f_timestamp если добавляем ctrl+Y или insert в "CATest" добавляется запись и в поле f_identity будет 0 пока не будет перехода на другую запись или tableupdate --- и вы работаете только с теми записями которые были первоначально(две) --- и те которые вы добавили сами BROWSE TITLE ' ' IN screen -- имитация вставки записи другим пользователем SQLEXEC(nAutoRefreshConn ,"INSERT INTO #CAAutoRefreshDemo (f_int_unique,f_varchar) VALUES (3,'demo3')") -- у себя в "CATest" вы их не видите пока не будет =requery("CATest") перевыборка всего вашего параметриз.. запроса --но если неперевыбирать то вновь добаленные вами записи будут иметь identity с учётом добавленных другими юзерами BROWSE TITLE ' ' IN screen Это можно не использовать но знать нужно я пока не пользую вставки в основном через процедуры а через неё(процедуру) можно получить и id (output параметром 100% гарантия что вставил ты и это твой identity ) ещё CursorAdapter замечательно рабоает с -параметризованными запросами -параметризованными ХРАНИМЫМИ ПРОЦЕДУРАМИ -может принимать параметры output хр процедур и много другого ещё умеет ....... я не теоретик объяснить не смогу доходчиво в Foxe ещё с Dosa перепробовал многое остановился на ADO CursorAdapter просто нравится .... и только время боится пирамид! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 17:43 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
To Pavel_t Спасибо, я в основном понял Ваши объяснения. Только я все инсерты закидываю через tableupdate. Подскажите, пожалуйста по вашему коду, есди сделать так: после создания таблицы, занесения в нее 2-х записей, создания адаптера запускаем такой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2006, 18:13 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
Hi All! Да уж, нагородили столько бреда на пустом месте, что аж жутко становится... Любителям параметризованных View с последующим Requery()+GO BOTTOM посвящается. На сервере примитивная таблица с IDENTITY полем. На фоксе представление. CREATE SQL VIEW View1 CONNECTION ... AS ; SELECT ID, Name FROM SomeTable WHERE Name LIKE ?m.MyStencil * Настроим также обновление поля Name? можно и Id хотя смысла в том нету. Можно сделать? MyStencil = "ИВАН%" USE DB!View1 Можно сделать? Какие данные будут в курсоре? INSERT INTO View1 (Name) VALUES ("ПЕТРОВ") Можно? Что будет в курсоре? ? TABLEUPDATE("View1") Можно? Что после этого будет на сервере? ? REQUERY("View1") GO BOTTOM Теперь смотрите на результат - если вы увидете там вашу новую запись, и соответственно новый ID - и при этом предварительно не покушаете галлюциногенных грибочков, то вы видимо знатный шаман :) Чуть меняем запрос в представлении: SELECT ID, Name FROM SomeTable ORDER BY Name И что, вы по прежнему будете настаивать на том что REQUERY()+GO BOTTOM даст значние "нового" ID господина "Петрова", а не того ID который был скажем у господина "Якина" находящегося последним по алфавиту в списке? Даже ещё проще! Возьмите вашу СУБД и проведите с ней простую работу - вставляйте последовательно записи, РУКАМИ наращивая значение некоторого поля (не IDENTITY конечно) - вставив несколько тысяч записей удалите из них половину или лучше процентов 90 (желательно в случайном порядке - но можно и большими блоками) - потом снова вставляйте и снова удаляйте - в конце концов в результате выборки БЕЗ опции ORDER BY вы получите не "последовательно возрастающие коды", а полную мешанину - это просто иллюстрация того простого принципа, что в подавляющем большинстве СУБД НЕ СУЩЕСТВУЕТ понятия "физической последовательности записей"! И уже одно это отправляет ваш REQUERY()+GO BOTTOM на помойку. Ну про то что "я никогда не видел как в базу параллельно вставляется несколько записей в течении одной секунды" - уже сказано - это порочная логика - то что девелопер не в состоянии достаточно синхронно нажать 2 кнопки на 2-х клавиатурах не означает что это невозможно в принципе. И вообще не стоит себя вести как капризный ребёнок - если говорят что так делать нельзя, и тем более если дают ссылки на то как НУЖНО делать - не "от себя", а от производителя соответствующего сервера! То наверное стоит не спорить, а читать и думать, думать и читать! Что касается CAD - это по сути RV и есть - они работают во многом идентично - но в отличие от RV он позволяет гораздо больше вмешиваться в процесс запроса/сохранения - в частности в VFP9 через группу свойств *RefreshCmd и/или методы CAD позволяет практически автоматически получать присваиваемые сервером значения - т.е. делать тот самый мелкий Refresh (а не полный REQUERY который к тому-же может и не те записи вернуть и не в том порядке в каком они были). Кстати пример с CAD был не очень удачный - он основан на идее использования ключа-кандидата, а такового может и не быть в наличии! А вот @@IDENTITY есть всегда - ну или SCOPE_IDENTITY() - но в одном батче с самим INSERT (а проще видимо в ХП). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 00:19 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
to korolev однако нервишки.. в пылу страсти мне кажется вы допускаете примитивные ошибки в своей логике рассуждений... вот вы пишете что в базе нет порядка, но это ведь основной принцып баз, последняя запись всегда последняя.. не нужно использовать ордер, тогда последняя запись будет стоять последней.. и не важно чья она - клиента пупкина или пипкина... это можно проследить по id. открываем хелп в фоксе и читаем: GO BOTTOM Positions the record pointer on the last record in the table. If the table has an ascending index in use, the last record is the record with the highest key value. If the index is in descending order, the last record is the record with the lowest key value. кей мы не используем -> последняя является последней (физически) итак резюме: requery - сбрасывает запись и тут же пакетом вытаскивает ее go bottom двигает указатель на нее... но никто не оспаривает ваше право пользовать другие методы работы с базой, просто вы привыкли работать с базой путем функций SQLexec и т.д., я привык пользовать view.. вот теперь может быть перейду к CAD.. в нашем споре я почерпнул для себя кое что полезное, вы немного остудились увидев другие подходы, которые как ни странно работают, как бы там нибыло дискуссия была полезной, я так думаю. с уважением FoXXX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 09:51 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
/*И вообще не стоит себя вести как капризный ребёнок - если говорят что так делать нельзя, и тем более если дают ссылки на то как НУЖНО делать - не "от себя", а от производителя соответствующего сервера! То наверное стоит не спорить, а читать и думать, думать и читать!*/ слепая вера документации... так нельзя, не все знает и фирма разработчик, например читая доку по ораклу - часто находил как консультанты оракла сами делали открытия в нем запуская необычные процедуры... или пример из фокса в моей практике - в 1992м году я активно пользовался SQL запросами, но в доке было написано: не вставляйте в поля функции, они неизвестно как будут работать и возможно не будут поддерживаться в следующих версиях... но я вставлял, пользовался и все работало.. надо ли слепо следовать инструкциям?? я предпочитаю проверять инструкции и доку на практике и не боюсь что-нибудь проверить или применить не рекомендованное или не описанное в доке.. тем более в фоксе столько глюков, что любая инструкция описанная в доке не факт будет работать как описано.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 10:14 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
Всё боится времени to foXXX кей мы не используем -> последняя является последней (физически) итак резюме: requery - сбрасывает запись и тут же пакетом вытаскивает ее go bottom двигает указатель на нее... не согласен если Rv параметризованный и вновь введённая запись не удовлетворяет параметрам запроса она и неперевыберется по =requery() хотя и добавится с уважением павел Т .... и только время боится пирамид! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 11:39 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
Pavel_t Всё боится времени to foXXX кей мы не используем -> последняя является последней (физически) итак резюме: requery - сбрасывает запись и тут же пакетом вытаскивает ее go bottom двигает указатель на нее... не согласен если Rv параметризованный и вновь введённая запись не удовлетворяет параметрам запроса она и неперевыберется по =requery() хотя и добавится с уважением павел Т .... и только время боится пирамид! поясню, параметризация применяется в основном с целью отброса ненужной информации, я например часто применяю по дате (сегодняшняя дата, или этот месяц, или этот год .. по ситуации), ест-но дата на сервере если поле заполняется само или дата на машине если поле заполняется клиентом единтична систем дате, потому последняя запись будет последней сегодня... те параметр = сисдате, рекьюри го боттом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 11:58 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
FoXXXпоясню, параметризация применяется в основном с целью отброса ненужной информации, я например часто применяю по дате (сегодняшняя дата, или этот месяц, или этот год .. по ситуации) Допустим, работает себе бухгалтер с док-тами текущего месяца (чтобы всю базе не тянуть). Заносит их. Вдруг ему надо занести документ за прошлый месяц. Он его заводит и документ проваливается куда-то (в базе появился, а в гриде нет). Ну это еще ладно. А вдруг он случайно пальцем не туда попал и вбил не тот месяц. "Шайтан, где мой докУмент, а жеш его завел!!!?"- скажет бухг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 13:05 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
FoXXXвот вы пишете что в базе нет порядка, но это ведь основной принцып баз, последняя запись всегда последняя.. Еще раз. Мы говорим о СЕРВЕРНОЙ базе данных. FoxPro - это инструмент доступа к этим данным. Но сами данные хранятся вовсе не в нем, а в MS SQL. Приводить в качестве аргумента цитаты по структуре хранения в файлах DBF - весьма странно. Так вот, ни в одной серверной базе данных НЕТ такого понятия, как порядок следования записей. Это значит, что если Вы дадите серверной базе данных запрос вида SELECT * FROM MyTab то, в общем случае, невозможно предсказать, в какой именно последовательности эти записи будут выведены. В этом случае, Go Bottom, конечно перейдет к последней записи ВЫБОРКИ , но это вовсе не означает, что последняя запись выборки окажется последней созданной записью. Вот именно об этом Игорь и говорит. Нужен ORDER BY по полю Identity иначе нет никакой гарантии, что Вы прочитаете код последней созданной записи. Вы прочитаете всего-лишь код последней выбранной записи PS: Большая просьба, прежде чем бросаться писать ответ, прочитете вызвавшее такое раздражение сообщение еще раз. Вы точно поняли О ЧЕМ идет речь? Прочитали то, что написана, а не то, что Вам показалось написанным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 13:05 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
Sergej_S FoXXXпоясню, параметризация применяется в основном с целью отброса ненужной информации, я например часто применяю по дате (сегодняшняя дата, или этот месяц, или этот год .. по ситуации) Допустим, работает себе бухгалтер с док-тами текущего месяца (чтобы всю базе не тянуть). Заносит их. Вдруг ему надо занести документ за прошлый месяц. Он его заводит и документ проваливается куда-то (в базе появился, а в гриде нет). Ну это еще ладно. А вдруг он случайно пальцем не туда попал и вбил не тот месяц. "Шайтан, где мой докУмент, а жеш его завел!!!?"- скажет бухг. ну что ж вы так непонятливы.. в параметрическом вью не обязательно вручную вбивать параметр, да и не делает этого никто никогда, параметр - это переменная, которая задается по умолчанию, например сист дата, можно использовать конструкцию битвин, тогда возможно залдание периода, переменная определяется автоматически как глобал, далее, на форме где-то должно быть окошко (информационное) в каком периоде мы работаем, если хотим прошлый месяц - пожалуйста, прошлый год - пожалуйста, кстати параметр не обязательно формата даты, может быть и просто число - № месяца например, да и странно если бухгалтер будет каждый раз не так пальчиком тыкать в период своей работы, она должна хотябы понимать квартал, месяц, год, ну если не менять то по умолчанию текущий. это только один из вариантов работы с вью.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 13:51 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
ВладимирМ FoXXXвот вы пишете что в базе нет порядка, но это ведь основной принцып баз, последняя запись всегда последняя.. Еще раз. Мы говорим о СЕРВЕРНОЙ базе данных. FoxPro - это инструмент доступа к этим данным. Но сами данные хранятся вовсе не в нем, а в MS SQL. Приводить в качестве аргумента цитаты по структуре хранения в файлах DBF - весьма странно. Так вот, ни в одной серверной базе данных НЕТ такого понятия, как порядок следования записей. Это значит, что если Вы дадите серверной базе данных запрос вида SELECT * FROM MyTab то, в общем случае, невозможно предсказать, в какой именно последовательности эти записи будут выведены. В этом случае, Go Bottom, конечно перейдет к последней записи ВЫБОРКИ , но это вовсе не означает, что последняя запись выборки окажется последней созданной записью. Вот именно об этом Игорь и говорит. Нужен ORDER BY по полю Identity иначе нет никакой гарантии, что Вы прочитаете код последней созданной записи. Вы прочитаете всего-лишь код последней выбранной записи PS: Большая просьба, прежде чем бросаться писать ответ, прочитете вызвавшее такое раздражение сообщение еще раз. Вы точно поняли О ЧЕМ идет речь? Прочитали то, что написана, а не то, что Вам показалось написанным? ну не знаю как вам это удается - получить перемешанные записи, я наблюдаю записи в самом SQL и в вью, они сохраняют порядок введения на протяжении 5 лет... ну большей базы под рукой нет... только селект простой без ордера.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 13:54 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
FoXXX ну не знаю как вам это удается - получить перемешанные записи, я наблюдаю записи в самом SQL и в вью, они сохраняют порядок введения на протяжении 5 лет... ну большей базы под рукой нет... только селект простой без ордера.. Как-то верится с трудом, что Вы действительно это наблюдали. Проведём тест Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Как видите, если есть кластерный индекс записи возвращаются в порядке индекса, а не в порядке создания записей. Вот про это Вам и рассказывают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 14:23 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
В дополнении к замечаниям PaulWist и ВладимирМ для FoXXX: А если нет кластерного индекса, данные лежат в HEAP - куче, т.е. страницы по 8 кб, связанные ТОЛЬКО через специальные страницы IAM (Index Allocation Map). Это означает, что при операции вставки, удалении и тем более при SHRINK (при сжатии базы данных) может происходить ФИЗИЧЕСКОЕ перемещение записей внутри страницы, что приводит к ДРУГОМУ порядку расположения и ИЗВЛЕЧЕНИЯ данных сервером с диска в кэш, ну и затем клиенту. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 14:39 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
да действительно если использовать индекс - порядок по индексу, в моем примере за 5 лет индекса нет, но если говорить об ident - он является ключевым полем, потому го боттом ориентируясь по нему пойдет на последний id, а рекьюри сделает пакетом апдейт и селект, го боттом передвинет указатель на последний id, готоры к тому времени в вью появится.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 14:41 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
извиняюсь, который к тому времени в вью появится собственно мы ведь про id говорим, который и является главным ключем.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 14:43 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
мда, а здесь битва в разгаре.. при прочих равных действительно requery и go bottom сработает, если конечно view будет по ключу id - ident, при том requery выполнится пакетом insert и select, другая запись в пакете не вставится, не так ли, и go bottom уйдет на последнюю, в смысле max. хотя на мой взгляд у CAD есть неплохие шансы, но в предыдущих версиях VFP пройдет и предложенный пакет команд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 15:12 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
PaulWist FoXXX ну не знаю как вам это удается - получить перемешанные записи, я наблюдаю записи в самом SQL и в вью, они сохраняют порядок введения на протяжении 5 лет... ну большей базы под рукой нет... только селект простой без ордера.. Как-то верится с трудом, что Вы действительно это наблюдали. Проведём тест Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Как видите, если есть кластерный индекс записи возвращаются в порядке индекса, а не в порядке создания записей. Вот про это Вам и рассказывают. тест прогнал, действительно по индексу, в моей базе за 5 лет 50 записей :-), вроде судя по датам лежат по порядку, наверно шринк в ней не делался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 15:16 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
Ещё раз REQUERY() - GO BOTTOM в ОБЩЕМ случае не дадут требуемый результат последней тобой добавленной записи, если сейчас не можешь этого понять, то прими на веру - это в дальнейшем избавит от множества ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 15:21 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
PaulWistЕщё раз REQUERY() - GO BOTTOM в ОБЩЕМ случае не дадут требуемый результат последней тобой добавленной записи, если сейчас не можешь этого понять, то прими на веру - это в дальнейшем избавит от множества ошибок. собственно не ставил целью навязать свое решение, у меня этот метод работает, думаю и дальше будет работать, вью конечно по ключу, на мой взгляд две команды - лучше нескольких строк типа sqlexec(;lfg;lgfh;lkgh) и т.д. темболе что на стороне сервера все работает корректно. на веру можно только богу и царю :-), я все-таки предпочитаю факты, мне мой подход нравится и пока не подводил, тебе нравится твой подход, это твой выбор. спасибо за дискуссию, всем удачи.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 15:37 |
|
||
|
VFP + SQL поле IDENTITY
|
|||
|---|---|---|---|
|
#18+
Извините, если кого достал, прошу выполнить следующий код в VFP9 (+sql 2000). Какое значение возвращается в messagebox ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 16:15 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33592511&tid=1592046]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
145ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 224ms |
| total: | 487ms |

| 0 / 0 |
