Форум: "Базы";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
ВнизПереименование строк в идексированной таблице Найти похожие ветки
← →
Shuric (2003-03-26 21:26) [0]Подскажите плиз наиболее рациональное решение задачи по переименованию нескольких строк в индексированной таблице.
Ключ по нулевому полю ("Наименование"). Придумал только:
function ChangeMatrizaElement(const OLDNameElement, NewNameElement: string): Wordbool;
var
AStroka: string;
Label 0;
begin
Result := True;
with TableMatriza do
if Active then begin
0: if Locate("Наименование", OLDNameElement, [loPartialKey]) then begin
AStroka := Fields[0].AsString;
if System.Pos(OLDNameElement, AStroka) = 1 then begin
System.Delete(AStroka, 1, length(OLDNameElement));
AStroka := NewNameElement + AStroka;
Edit;
Fields[0].AsString := AStroka;
try
Post;
except
on EDatabaseError do begin
Cancel;
Result := False;
end;
end;
if Result then goto 0;
end;
end;
end
else Result := False;
end;
← →
sniknik (2003-03-26 22:50) [1]можно запросом
AdoCommand.CommandText:=
"UPDATE TableMatriza SET [Наименование]="""+
NewNameElement+"""+Mid([Наименование], Len("""+OLDNameElement+""")+1) "+
"WHERE CompanyName LIKE """+OLDNameElement++"%""";
AdoCommand.Execute
ну как тут вполне справедливо заметили, какие компоненты использовать это я у тебя между строк прочитал (вернее между букв в нике), а база у вас точь в точь как у меня, и не отпирайся, все одно не поверю если будеш другое говорить. (сарказм, если не понятно)
зато решение САМОЕ рациональное!
← →
Shuric (2003-03-26 23:43) [2]>sniknik ©
Ага, угу.
В некотором плане вы правы, однако данная таблица у меня не оппровайдерна и редактируется только серверной частью (всегда открыта на запись). А клиенты о ней не знают. А если запросами - то енто в каждой процедуре открыть, закрыть с различными SQL. И вооще у меня не ADO ;)
← →
Johnmen (2003-03-27 00:45) [3]Рекомендую к прочтению :
http://ln.com.ua/~openxs/articles/smart-questions-ru.html
← →
sniknik (2003-03-27 08:23) [4]Shuric (26.03.03 23:43)
> И вооще у меня не ADO ;)
с чем вас и поздравляю.
> однако данная таблица у меня не оппровайдерна и редактируется только серверной частью (всегда открыта на запись).
но серверная часть есть, а SQL не используется, значит техногия файл сервер, нехорошо. SQL (сервера) в основном для того и придумали чтобы уйти от этого непрогрессивного и неэффективного метода (для серверных баз неэффективного, для локальных можно и таблицы открывать). а ты его так сразу отметаеш, открыть лишний раз таблицу видете ли лень. Открою небольшой секрет, ее вообше не нужно открывать, ни на запись ни на чтение, редактировать тоже запросами они разберутся как и когда ее отрывать закрывать.
← →
Shuric (2003-03-28 15:26) [5]>sniknik ©
Ладно - ладно, не умничай ;) Я в свое время собаками объелся (до сих пор изжога) на поприще запросов. Просто для разных баз они несколько отличаются, и моем случае многие типы не доступны.
← →
sniknik (2003-03-28 15:54) [6]именно отличаются, и не только запросы но и компоненты доступа к базам. почему и просят (постоянно) указывайте в вопросе полную информацию. (и постоянно игнорируется)
говориш таблица индексированна, а используеш Locate (по частичному значению индекс не используется).
почему не
GotoKey или GotoNearest? можно с уточняющей проверкой. раз индекс есть. или в твоих компонентах нет GotoNearest? тогда читай первую строку поста.
← →
Anatoly Podgoretsky (2003-03-28 16:56) [7]sniknik © (28.03.03 15:54)
Ты не умничай, ты скажи что делать
← →
Shuric (2003-03-28 17:56) [8]>sniknik ©
Старый добрый Paradox, и стандартный TTable. Индекса как какового нет, его роль - primary index
>GotoKey или GotoNearest - по идее таже констукция, а скорость мне не нужна, т.к. записей мало. Таблица есть по сути зеркало каталога базы данных. Вроде все.
Наверно кардинально не упростить, но всеравно огромное спасибо sniknik © ;)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.209 c