|
|
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
*И форму лучше запускать puplic form1 DO Form form1 NAME form1 LINKED *Тогда к форме можно будет однозначно обращаться по имени, попробуй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 16:59:39 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
У меня заработало... Я только прошу вас помочь мне понять, в чём было не так. Итак вот с этим кодом работает: DROP TABLE "test1" SELECT name,p_ser,p_nom, adres from db_path+"vk_klie.dbf" INTO TABLE test1 CLOSE TABLES DO FORM "c:\Documents and Settings\alexx\Ìîè äîêóìåíòû\Visual FoxPro Projects\proj1\form2" NAME frm1 frm1.Grid1.ColumnCount=4 frm1.Grid1.RecordSourceType=0 frm1.Grid1.RecordSource="test1" frm1.Grid1.AutoFit() frm1.Grid1.Column1.Header1.Caption="ÔÈÎ" frm1.Grid1.Column2.Header1.Caption="Ñåðèÿ Ï." frm1.Grid1.Column3.Header1.Caption="Íîìåð Ï." frm1.Grid1.Column4.Header1.Caption="Àäðåñ" Код, где поиск SELECT "test1" GO TOP IN test1 LOCATE FOR test1.name=ALLTRIM(thisform.text1.value) frm1.Grid1.Refresh() frm1.Grid1.setfocus() thisform.Release А вот с этим кодом не работает: DROP TABLE "test1" SELECT name,p_ser,p_nom, adres from db_path+"vk_klie.dbf" INTO TABLE test1 DO FORM "c:\Documents and Settings\alexx\Ìîè äîêóìåíòû\Visual FoxPro Projects\proj1\form2" NAME frm1 frm1.Grid1.ColumnCount=4 frm1.Grid1.RecordSourceType=0 frm1.Grid1.RecordSource="test1" frm1.Grid1.AutoFit() frm1.Grid1.Column1.Header1.Caption="ÔÈÎ" frm1.Grid1.Column2.Header1.Caption="Ñåðèÿ Ï." frm1.Grid1.Column3.Header1.Caption="Íîìåð Ï." frm1.Grid1.Column4.Header1.Caption="Àäðåñ" Различие в том что я добавил close tables. И всё заработало. В чём причина??? Может ошибка серьёзней, чем мне кажется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 17:09:16 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
DROP TABLE зачем удалять таблицу из Базы (Removes a table from the current database and deletes it from disk) затем записывать кудато новую свободную таблицу? Как потом будет применятся данная таблица? **** Ведь можно к гриду привязать сразу нужную таблицу (db_path+"vk_klie.dbf") затем по таблице сделать поиск и пр. без каких либо посредников Можно к гриду и результат запроса подцепить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 17:52:44 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
НЕ НАДО устанавливать Grid.RecordSourceType = 0 - Table Оставьте настройку по умолчанию Grid.RecordSourceType = 1 - Alias Включите эту таблицу в DataEnvironment-формы и больше не мучайтесь. Ну, или вручную открывайте эту таблицу в LOAD-формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 21:55:18 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
Я бы сделал несколько иначе: Код: plaintext 1. Пытаемся запустить форму В форме, в Load открываем нужную таблицу, если таблица не открыта или не удается открыть, Код: plaintext форма не откроется Дальше варианты: если нужен результат запроса: Init формы Код: plaintext 1. 2. 3. 4. 5. после этого все обращения к курсору c_test1 или просто таблицу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. (Так же можно все сделать в конструкторе форм.) PS На истину в последней инстанции не претендую :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2005, 01:46:10 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
a ya dumayu tak v Load formu postavit : public nRecn DO FORM "form2" NAME frm1 DROP TABLE "test1" SELECT name,p_ser,p_nom, adres from db_path+"vk_klie.dbf" INTO TABLE test1 frm1.Grid1.ColumnCount=4 frm1.Grid1.RecordSourceType=0 frm1.Grid1.RecordSource="test1" frm1.Grid1.AutoFit() frm1.Grid1.Column1.Header1.Caption="xxx" frm1.Grid1.Column2.Header1.Caption="yyy" frm1.Grid1.Column3.Header1.Caption="zzz" frm1.Grid1.Column4.Header1.Caption="aaa" READ EVENTS Код кнопки формы, которую вызываю: SELECT "test1" GO TOP IN test1 LOCATE FOR test1.name=ALLTRIM(thisform.text1.value) nRecn =Recno() frm1.Grid1.Refresh() frm1.Grid1.setfo cus() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2005, 10:12:55 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
А если этот код будет выполнятся не один раз? Удалил из БД таблицу и создал свободную таблицу, не воходящую в БД с тем же именем в каталоге, выбранном в данный момент поумоляанию. При повторном запуске , команда DROP TABLE test1 - выдаст ошибку, т.к. не сможет найти в БД таблицы с именем "test1". А если эта таблица временная , тогда зачем ее туда (в БД) помещать? И вообще зачем ее создавать? Если нам просто в таблице vk_klie необходимо найти некоторого клиента? Там ведь можно будет и индексами воспользоваться (если создать конечно), тогда и поиск будет осуществляться быстрей SEEK(). Да и в формате поиска надобно к общему регистру приводить. Можно попробовать в окне комманд ввести: ? 'Aaa'='aaa' и получить .F. Для Locate не надо предварительно уходить в начало таблицы, она и так будет искать от туда, сама по себе. Можно это экспериментально посмотреть. Будет наглядно видно :) И если найдет запись, то там и остановится, при этом Recno() выдаст номер найденой записи, а found() выдаст .T., получается запомнить номер текущей записи и идти к ней же - к текущей записи!? IMHO не правельно это все изначально, проще надо быть :) Хотя хозяин-барин... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2005, 16:33:27 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33226331&tid=1593641]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
398ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 732ms |

| 0 / 0 |
