Форум: "Потрепаться";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];
ВнизИзменение записей в таблице Найти похожие ветки
← →
line (2003-02-23 09:01) [0]Как добавить новую запись - понятно, а как изменить уже существующие записи в таблице?
← →
Alexandr B. (2003-02-23 09:36) [1]Вроде так.
Table1.edit;
Table1.fieldbyname("my field").asstring := "test";
table1.post;
← →
MsGuns (2003-02-23 14:16) [2]Можно еще (и лучше, ИМХО) запросами.
← →
line (2003-02-24 09:06) [3]Непонял, можноконкретнее.
Есть таблица: Table1
Поля:
Name := "F";
DataType:=ftString;
Size:=20;
Name := "I";
DataType:=ftString;
Size:=20;
Добавление:
Table1.Open;
Insert;
FieldByName("F").AsString:=Edit1.Text;
FieldByName("I").AsString:=Edit2.Text;
Post;
Удаление:
Не всей таблицы, а только одной записи - ???
(удалить записи где F="1")
Изменение:
Как изменить запись в таблице - ???
← →
Соловьев (2003-02-24 09:27) [4]Удаление записи, где F="1":
DELETE FROM table
WHERE F="1"
Изменить:
UPDATE table
SET F="2"
WHERE F="1"
← →
line (2003-02-24 11:16) [5]>Соловьёв
Я знаю про это:
Insert into <имя таблицы> (<список полей>) values (<список значений>)
Update <имя таблицы> set <список вида <gjkt>=<выражение>> where <условие>
и т.д.
Повторяю, вставка данных в мою таблицу происходит так:
Table1.Open;
Insert;
FieldByName("F").AsString:=Edit1.Text;
FieldByName("I").AsString:=Edit2.Text;
Post;
Как на основе такой конструкции изменить и как удалить значения из полей таблицы Table1???
← →
Соловьев (2003-02-24 11:24) [6]Сначала нужно спозиционировать курсор в НД - попробуй
Locate(...)
. А потом:
with Table1 do
begin
Delete;//для удаления код выше не нужен
Edit;//для редактирования
FieldByName("F").AsString := Edit1.Text;
...
Post;
end;
Если масово , то только с SQL.
← →
Hawk2 (2003-02-24 11:32) [7]Во-первых у тебя синтаксис не правильный, свойства какого объекта ты используешь:
Insert;
FieldByName("F").AsString:=Edit1.Text;
FieldByName("I").AsString:=Edit2.Text;
Post;
нужно указать:
Table1.Insert;
Table1.FieldByName("F").AsString:=Edit1.Text;
Table1.FieldByName("I").AsString:=Edit2.Text;
Table1.Post;
А редактирование виполняешь так: переходишь на запись которую нужно редактировать (програмно или вручную смотря как надо) и виполняешь такой код:
Table1.Open;
Table1.Edit;
If Table1.FieldByName("F").AsString = "2" then
begin
Table1.FieldByName("F").AsString:=Edit1.Text;
Table1.FieldByName("I").AsString:=Edit2.Text;
Table1.Post;
end;
← →
line (2003-02-24 11:32) [8]Я попробывал вариант:
with Table1 do
begin
Open;
Delete;
FieldByName("F").AsString:=Edit20.Text;
Post;
end;
Прога удаляет из базы первую строку, хотя я хочу чтобы она удаляла строку где F = Edit20.text и выдаёт ошибку:
"Database not in edit or insert mode"
← →
line (2003-02-24 11:39) [9]>Hawk2
Замечательно, это то что нужно!
А как удалять строки я сам допру.
Спасибо
← →
line (2003-02-24 12:07) [10]Что означает "переходишь на запись которую нужно редактировать"?
Я попробывал такой вариант перехода:
begin
Query1.SQL.Add("SELECT F MainBase where F ");
Query1.SQL.Add("Like """ + Edit18.Text + "%""");
Query1.Active:=True;
end;
но нечего неполучиось, можно попродробнее про "переход"?
← →
line (2003-02-24 12:17) [11]Сейчас изменения можно сделать только в последней строке таблицы, как сделать изменения в других строках, а точнее как на них перейти?
← →
Соловьев (2003-02-24 12:18) [12]Locate или where в SQL
← →
Andrey (2003-02-24 12:23) [13]
Table1.First; // на первую запись
Table1.Prior; // на предидущую запись
Table1.Next; // на следующую
Table1.Last; // на последнюю запись
← →
Соловьев (2003-02-24 12:24) [14]
> но нечего неполучиось
А что произошло? У тебя НД связан с визуальной компонентой?
← →
Соловьев (2003-02-24 12:25) [15]
> Andrey © (24.02.03 12:23)
> Table1.First; // на первую запись
> Table1.Prior; // на предидущую запись
> Table1.Next; // на следующую
> Table1.Last; // на последнюю запись
Это маразм так переходить. Во первых нужно сделать отключение от визуальных компонент, а во вторых долго...
← →
Andrey (2003-02-24 12:37) [16]>Соловьев
> Это маразм так переходить
Весьма категоричное утверждение. Позвольте усомнится.
> Во первых нужно сделать отключение от визуальных компонент
Если по смыслу задачи требуется то нужно, а если не требуется то нет.
>line
Конкретнее, чего надо?
> во вторых долго
Не долго, а дольше. И то не во всех случаях. Наример при:
Table1.First;
while not Table1.Eof do
begin
.....
Table1.Next;
end;
Через Next позиционироватся быстрее чем через Locate если в таблице больше одной записи.
← →
Hawk2 (2003-02-24 15:07) [17]А как тебе нужно переходить по записям програмно или вручную?
← →
line (2003-02-25 07:54) [18]Вариант:
Table1.First;
while not Table1.Eof do
begin
.....
Table1.Next;
end;
отлично пошёл, это будет использоваться для изменения всех записей, а для отдельных записей я сделал так:
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
...
with Table1 do
begin
Open;
Edit;
Post;
end;
end;
Спасибо всем
← →
Pat (2003-02-25 08:00) [19]>Вариант:
>Table1.First;
>while not Table1.Eof do
>begin
>.....
>Table1.Next;
>end;
>
>отлично пошёл, это будет использоваться для изменения всех
>записей
При большом количестве записей можно будет сходить чай попить.
см. Соловьев © (24.02.03 09:27) про Update
← →
line (2003-02-25 08:04) [20]Pat, всё понятно, посмотри следующую запись
← →
Соловьев (2003-02-25 09:28) [21]
> procedure TForm1.DBGrid1DblClick(Sender: TObject);
> begin
> ...
> with Table1 do
> begin
> Open;
> Edit;
> Post;
> end;
> end;
И что работает???
← →
Hawk2 (2003-02-25 10:16) [22]line тебе как плохому ученику лень заглянуть в книжку или хелп.
Для глобального изменения данных в таблице подойдет твой вариант:
Table1.Open;
Table1.First;
while not Table1.Eof do
begin
Table1.FieldByName("F").AsString:=Edit1.Text;
Table1.FieldByName("I").AsString:=Edit2.Text;
Table1.Next;
end;
но можно и через SQL-запрос:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("UPDATE yourtable SET (field1=""+Edit1.Text+"", field2=""+Edit2.Text+""");
Query1.ExecSQL;
Как говорили Соловьев и Pat будет работать быстрее.
Тоже самое и с редактированием одной записи. Можно сделать двумя способами. Только нужно проверять какую запись ты редактируешь.
← →
vopros (2003-02-25 10:20) [23]line- ну ты клоун.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c