![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приветствую многоуважаемых Мастеров ! ; DBGrid->DataSource->Table ??? [D5, dBase, FoxPro]
IronHawk © (2002-02-22 11:04:00)С праздничком !
Проблема: Есть на одной форме DBGrid1 и DBGrid2 каждый завязан к своиму DataSource1 и DataSource2 соответственно,
далее DataSource1 и DataSource2 завязаны к своим Table1 и Table2,
которые в свою очередь связаны с базами Base1.dbf(с данными)и Base2.dbf(пустая) !!!
На форме так же присудствует кнопка ButtonW !
В полях, некоторых, столбца "Priznak" (в DBGrid1) есть симол "W" !!!
Внимание вопрос : Как по клику на кнопку ButtonW перенести строки в которэх есть, в полях столбца "Priznak" (в DBGrid1) симол "W" в DBGrid2 ???
IronHawk (2002-02-25 12:27:00) [1]Всем спасибо !
Реализовал как сказал Turalyon ©
Работает за считанные доли секунды !
ВСЕМ СПАСИБО !
sniknik (2002-02-25 12:15:00) [2]В смысле как вылечить? Не хочеш не используй, делай перенос переборкой в таблицах. Но в скорости проиграеш. Это понятно.
(причем очень прилично порядки приблизительно такие в BDE Dbf 3000 записей перенос 3сек INSERT <1сек, ADO Dbf перенос 1мин 40сек!!!!! INSERT < 1сек) С ADO сам не до конца разобрался но похоже такое время изза того что каждая выборка 1 значения перестраивается в SELECT а так как таблица не индексированна....
IronHawk (2002-02-25 11:20:00) [3]>>> sniknik ©
> Добавь еще Query можно будет использовать
>
> INSERT INTO Base2.dbf SELECT * FROM Base2.dbf WHERE FlagField
> LIKE "%W%"
Спасибо !
Но я б нехотел Query исспользовать !
Как бы так, это вылечить ?
sniknik (2002-02-22 20:03:00) [4]Добавь еще Query можно будет использовать
INSERT INTO Base2.dbf SELECT * FROM Base2.dbf WHERE FlagField LIKE "%W%"
(самый быстрый вариант из всех возможных, если сравнивать с построчным перебором)
А трабл-проверь таблицу похожая вещь получается если таблица Read Only (не обязательно но возможно)
IronHawk (2002-02-22 18:19:00) [5]Трабл появился !
После "перекомпиляния" DBGrid1 перешел в ReadOnly и поставить "W"
или даже воспользоваться PickList-ом для этого НеЛьЗя !
... Как лечить ?
IronHawk (2002-02-22 13:58:00) [6]
> Turalyon © (22.02.02 12:20)
> >panov ©
>
> if DBGrid1.DataSource.DataSet.FieldValues["FlagField"] ="W"
> then
>
> Сработает только если в поле FlagField равно только "W"
> а если значение поля будет "aasasWsds" то оно не пройдет...
> а IronHawk необходимо чтобы работало, если я правльно понял
> вопрос....
Да правильно !
Но я немного изменил DBGrid1 там в "FlagField" можно поставить ТОЛЬКО "W" !
СПАСИБО !
Turalyon (2002-02-22 12:20:00) [7]>panov ©
if DBGrid1.DataSource.DataSet.FieldValues["FlagField"] ="W" then
Сработает только если в поле FlagField равно только "W" а если значение поля будет "aasasWsds" то оно не пройдет... а IronHawk необходимо чтобы работало, если я правльно понял вопрос....
IronHawk (2002-02-22 12:18:00) [8]
>>> panov ©
Тоже очень хороший вариант !
Благодарю !
.... выслушаються и примуться к сведению ВСЕ варианты !
panov (2002-02-22 12:07:00) [9]procedureTForm1.Button1Click(Sender: TObject);
var
index: Integer;
begin
DBGrid1.DataSource.DataSet.First;
while notDBGrid1.DataSource.DataSet.Eof do
begin
if DBGrid1.DataSource.DataSet.FieldValues["FlagField"] ="W" then
begin
DBGrid2.DataSource.DataSet.Append;
forindex := 0 toDBGrid1.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 11:50:00) [10]> Turalyon ©
Спасибо огромное !
ПЕРВЫЙ ТОЛКОВЫЙ И НАИБОЛЕЕ КОНКРЕТНЫЙ СОВЕТ ЗА 3-и ДНЯ !
... а ещё варианты есть ???
Turalyon (2002-02-22 11:20:00) [11]>С праздничком !
И тебя так же.
Table1.First;
repeat
if StrScan ( PChar(Table1.FieldyName("Priznak").AsString), "W") then
begin
Table2.Insert;
.... Добавляем
Table2.Post;
end;
until not Table1.FindNext;
Примерно вот так, только повнимательней прочтай про функцию StrScan - она ищет символ в строке.... Ну это в обще направлени...