Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 DELETE  [new]
R00S
Member

Откуда:
Сообщений: 44
Помогите, мне, пожалуйста, в решении вот такой задачи.
На форме есть 2 Grid поля (соответственно 2 разные БД подключены к ним) и одна кнопка (DELETE – помечает записи на удаление). Мне нужно сделать проверку типа такого: Если выбраны данные из Grid1 то понажат. по кнопке удал. данные из этого поля, а если фокус стоит на Grid2 то по наж. по кноп. данные удал.(помеч.) соответственно из этого поля.
Теперь как это все можно реализовать в FoxPro.

P.S.: Не ставить же две кнопки....
29 май 06, 18:44    [2718038]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
проходящий
Guest
Если я все правильно понял, то примерно так:

if alias()="Первая_таблица"
... && удаление из первой таблицы
else
... && удаление из второй таблицы
endif
29 май 06, 18:50    [2718065]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
R00S
Member

Откуда:
Сообщений: 44
А если эти таблицы связаны между собой (из Grid1 меняются значения Grid2). То как тогда удалить данные.
29 май 06, 19:20    [2718154]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
проходящий
Guest
Ну и вопросик, однако... Да откуда же мы знаем как они у тебя там связаны и как должны из-за этих связей удаляться?
29 май 06, 19:32    [2718179]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
FoxFox
Guest
Poprobuy :

LOCAL skod
SELECT table1
skod = table1.kkod

SELECT table2
LOCATE FOR table2.kkod = skod
DELETE while table2.kkod = skod
SELECT table3
LOCATE FOR table3.kkod = skod
DELETE while table3.kkod = skod


SELECT table1
LOCATE FOR table1.kkod = skod
DELETE
If !Eof()
Skip 1
Endif
If Eof() and !Bof()
Skip - 1
ENDIF
=TABLEUPDATE(.T.,.T.)
29 май 06, 22:47    [2718390]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
rashidnuk
Member

Откуда:
Сообщений: 22
А не проще-ли вместо вышестоящего кода в каждом селекте применять delete all :)
30 май 06, 06:00    [2718615]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
rashidnuk
Member

Откуда:
Сообщений: 22
R00S
Помогите, мне, пожалуйста, в решении вот такой задачи.
На форме есть 2 Grid поля (соответственно 2 разные БД подключены к ним) и одна кнопка (DELETE – помечает записи на удаление). Мне нужно сделать проверку типа такого: Если выбраны данные из Grid1 то понажат. по кнопке удал. данные из этого поля, а если фокус стоит на Grid2 то по наж. по кноп. данные удал.(помеч.) соответственно из этого поля.
Теперь как это все можно реализовать в FoxPro.

P.S.: Не ставить же две кнопки....

На самом деле все гораздо проще. Просто в событии Click кнопки впишите одно слово delete и на следующей строке thisform.refresh
delete
thisform.refresh
30 май 06, 06:08    [2718620]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
rashidnuk
Member

Откуда:
Сообщений: 22
Пардон. Специально проверил, оказывается куда ни ткни будет в таком случае идти удаление из первого грида.Хотя внизу видно к какой таблице обратился, видимо нужно покопаться в свойствах grid, узнать какой активный, а имя таблицы thisform.grid1.RecordSource например.
30 май 06, 07:05    [2718644]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
Янина
Member

Откуда:
Сообщений: 3
Подскажите, пожалуйста, если я пишу программульку на PHP, а база в фоксе, как мне удалить записи из таблички?
SQL-запрос с командой DELETE только помечает записи.
30 май 06, 08:30    [2718708]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
PaulWist
Member

Откуда:
Сообщений: 2236
Янина
Подскажите, пожалуйста, если я пишу программульку на PHP, а база в фоксе, как мне удалить записи из таблички?
SQL-запрос с командой DELETE только помечает записи.


Всё правильно, записи помечаются на удаление (командой DELETE), но физически не удаляются, для удаления используется коменда PACK, НО она может быть выполнена только в монопольом режиме открытия таблицы, поэтому физическое удаление выносят в административную процедур.

Кстати, а зачем Вам физически их удалять.
30 май 06, 11:42    [2719483]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
R00S
Member

Откуда:
Сообщений: 44
FoxFox
Poprobuy :

LOCAL skod
SELECT table1
skod = table1.kkod

SELECT table2
LOCATE FOR table2.kkod = skod
DELETE while table2.kkod = skod
SELECT table3
LOCATE FOR table3.kkod = skod
DELETE while table3.kkod = skod


SELECT table1
LOCATE FOR table1.kkod = skod
DELETE
If !Eof()
Skip 1
Endif
If Eof() and !Bof()
Skip - 1
ENDIF

А что такое "kkod"
=TABLEUPDATE(.T.,.T.)
30 май 06, 18:07    [2722179]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
FoxFox
Guest
kkod eto pole table1.A LOAD-e stoit takoy kod.

=CURSORSETPROP("Buffering",5,"table1")
=CURSORSETPROP("Buffering",5,"table2")
=CURSORSETPROP("Buffering",5,"table3")

SELECT table3
SET ORDER TO Kkod

SELECT table2
SET ORDER TO Kkod

SELECT table1
SET RELATION TO Kkod INTO table2;
,Kkod INTO table3 ADDITIVE
30 май 06, 22:46    [2722890]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
R00S
Member

Откуда:
Сообщений: 44
У меня на Form'у два Grid'а (Grid1 имеет связь с Grid2) при выгрузки формы из памяти я все записи помеченные на удаление спомощью Pack удаляю совсем.
USE books1.dbf(это Grid1) EXCLUSIVE
Pack
Удаляет все нормально.

USE books2.dbf(это Grid2) EXCLUSIVE
Pack
Но при удалении из второго Grid'a вылетает ошибка: "Эта таблица use". В чем дело? Как можно удалить из Grid2 данные? (Pack)? Почему из первой таблицы удаляются записи без проблем,а из второй - с ошибкой?
1 июн 06, 22:27    [2732416]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
FoxFox
Guest
IF NOT USED("Books2")
USE c:\Table\Books2.dbf IN 0 EXCLUSIVE
PACK
ENDIF
1 июн 06, 22:46    [2732451]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
R00S
Member

Откуда:
Сообщений: 44
FoxFox теперь он ругается что типа первая таблица (Books.dbf) use
1 июн 06, 22:57    [2732473]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
FoxFox
Guest
Postav etot kod i dlya 1 tablitsi.A lutshe bila bi ti vinimatelno posmotrel moi kodi.A ved u tebya svyazannie tablitsi?

eto dlya cmdDel(knopka)
LOCAL skod
SELECT table1
skod = table1.kkod

SELECT table2
LOCATE FOR table2.kkod = skod
DELETE while table2.kkod = skod
SELECT table3
LOCATE FOR table3.kkod = skod
DELETE while table3.kkod = skod


SELECT table1
LOCATE FOR table1.kkod = skod
DELETE
If !Eof()
Skip 1
Endif
If Eof() and !Bof()
Skip - 1
ENDIF
=TABLEUPDATE(.T.,.T.)

a eto dlya LOAD(form)

CURSORSETPROP("Buffering",5,"table1")
=CURSORSETPROP("Buffering",5,"table2")
=CURSORSETPROP("Buffering",5,"table3")

SELECT table3
SET ORDER TO Kkod

SELECT table2
SET ORDER TO Kkod

SELECT table1
SET RELATION TO Kkod INTO table2;
,Kkod INTO table3 ADDITIVE
1 июн 06, 23:05    [2732497]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
R00S
Member

Откуда:
Сообщений: 44
Ошибка теперь не вылетает. Но и записи из второй таблицы не удаляет
1 июн 06, 23:20    [2732529]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
FoxFox
Guest
Thisform.Refresh ne zabil?
1 июн 06, 23:24    [2732539]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
R00S
Member

Откуда:
Сообщений: 44
Все равно данные удаляются только из первой таблицы. Все так же сделал как вы мне шоворили. Вот проект, посмотрите, пожалуйста. Заранее благодарен.

К сообщению приложен файл (books.rar - 25Kb) cкачать
5 июн 06, 11:52    [2740449]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
Foxfox
Guest
Posmotri.

К сообщению приложен файл (Tak.rar - 3Kb) cкачать
5 июн 06, 21:58    [2743148]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить