Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.25;
Скачать: CL | DM;

Вниз

Приветствую многоуважаемых Мастеров ! DBGrid->DataSource->Table ???   Найти похожие ветки 

 
IronHawk ©   (2002-02-22 11:04) [0]

С праздничком !

Проблема: Есть на одной форме DBGrid1 и DBGrid2 каждый завязан к своиму DataSource1 и DataSource2 соответственно,
далее DataSource1 и DataSource2 завязаны к своим Table1 и Table2,
которые в свою очередь связаны с базами Base1.dbf(с данными)и Base2.dbf(пустая) !!!
На форме так же присудствует кнопка ButtonW !
В полях, некоторых, столбца "Priznak" (в DBGrid1) есть симол "W" !!!


Внимание вопрос : Как по клику на кнопку ButtonW перенести строки в которэх есть, в полях столбца "Priznak" (в DBGrid1) симол "W" в DBGrid2 ???


 
Turalyon ©   (2002-02-22 11:20) [1]

>С праздничком !
И тебя так же.

Table1.First;
repeat
if StrScan ( PChar(Table1.FieldyName("Priznak").AsString), "W") then
begin
Table2.Insert;
.... Добавляем
Table2.Post;
end;
until not Table1.FindNext;


Примерно вот так, только повнимательней прочтай про функцию StrScan - она ищет символ в строке.... Ну это в обще направлени...


 
IronHawk ©   (2002-02-22 11:50) [2]

> Turalyon ©

Спасибо огромное !


ПЕРВЫЙ ТОЛКОВЫЙ И НАИБОЛЕЕ КОНКРЕТНЫЙ СОВЕТ ЗА 3-и ДНЯ !

... а ещё варианты есть ???


 
panov ©   (2002-02-22 12:07) [3]

procedure TForm1.Button1Click(Sender: TObject);
var
index: Integer;
begin
DBGrid1.DataSource.DataSet.First;
while not DBGrid1.DataSource.DataSet.Eof do
begin
if DBGrid1.DataSource.DataSet.FieldValues["FlagField"] ="W" then
begin
DBGrid2.DataSource.DataSet.Append;
for index := 0 to DBGrid1.DataSource.DataSet.FieldCount-1 do
begin
DBGrid2.DataSource.DataSet.Fields[index] := DBGrid1.DataSource.DataSet.Fields[index];
end;
DBGrid2.DataSource.DataSet.Post;
end;
DBGrid1.DataSource.DataSet.Next;
end;
end;


 
IronHawk ©   (2002-02-22 12:18) [4]


>>> panov ©

Тоже очень хороший вариант !
Благодарю !


.... выслушаються и примуться к сведению ВСЕ варианты !


 
Turalyon ©   (2002-02-22 12:20) [5]

>panov ©

if DBGrid1.DataSource.DataSet.FieldValues["FlagField"] ="W" then

Сработает только если в поле FlagField равно только "W" а если значение поля будет "aasasWsds" то оно не пройдет... а IronHawk необходимо чтобы работало, если я правльно понял вопрос....


 
IronHawk ©   (2002-02-22 13:58) [6]


> Turalyon © (22.02.02 12:20)
> >panov ©
>
> if DBGrid1.DataSource.DataSet.FieldValues["FlagField"] ="W"
> then
>
> Сработает только если в поле FlagField равно только "W"
> а если значение поля будет "aasasWsds" то оно не пройдет...
> а IronHawk необходимо чтобы работало, если я правльно понял
> вопрос....


Да правильно !
Но я немного изменил DBGrid1 там в "FlagField" можно поставить ТОЛЬКО "W" !

СПАСИБО !


 
IronHawk ©   (2002-02-22 18:19) [7]

Трабл появился !
После "перекомпиляния" DBGrid1 перешел в ReadOnly и поставить "W"
или даже воспользоваться PickList-ом для этого НеЛьЗя !

... Как лечить ?


 
sniknik ©   (2002-02-22 20:03) [8]

Добавь еще Query можно будет использовать

INSERT INTO Base2.dbf SELECT * FROM Base2.dbf WHERE FlagField LIKE "%W%"

(самый быстрый вариант из всех возможных, если сравнивать с построчным перебором)
А трабл-проверь таблицу похожая вещь получается если таблица Read Only (не обязательно но возможно)


 
IronHawk ©   (2002-02-25 11:20) [9]

>>> sniknik ©

> Добавь еще Query можно будет использовать
>
> INSERT INTO Base2.dbf SELECT * FROM Base2.dbf WHERE FlagField
> LIKE "%W%"

Спасибо !
Но я б нехотел Query исспользовать !

Как бы так, это вылечить ?


 
sniknik ©   (2002-02-25 12:15) [10]

В смысле как вылечить? Не хочеш не используй, делай перенос переборкой в таблицах. Но в скорости проиграеш. Это понятно.
(причем очень прилично порядки приблизительно такие в BDE Dbf 3000 записей перенос 3сек INSERT <1сек, ADO Dbf перенос 1мин 40сек!!!!! INSERT < 1сек) С ADO сам не до конца разобрался но похоже такое время изза того что каждая выборка 1 значения перестраивается в SELECT а так как таблица не индексированна....


 
IronHawk ©   (2002-02-25 12:27) [11]

Всем спасибо !
Реализовал как сказал Turalyon ©
Работает за считанные доли секунды !
ВСЕМ СПАСИБО !



Страницы: 1 вся ветка

Текущий архив: 2002.03.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
6-80647
ShaH
2002-01-08 11:08
2002.03.25
Проблема с соединением сокетов


1-80515
ola
2002-03-13 07:34
2002.03.25
Просто вопрос!!!!


1-80506
Stexen
2002-03-11 23:00
2002.03.25
Компонент под углом


1-80473
kingdom
2002-03-12 13:03
2002.03.25
Почему MessageDlg при вызове из потока падает и как с эти бороться?


7-80706
Woolen
2001-11-27 11:07
2002.03.25
Лоток CD-ROM. Очень нужно! Помогите!