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

Вниз

Изменение записей в таблице   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.018 c
7-39586
maxim2
2003-01-15 06:45
2003.03.13
Как получить дискриптор меню кнопки Пуск


7-39615
maxim2
2003-01-16 06:29
2003.03.13
Зная дискриптор окно можно ли узнать его класс


14-39581
Amit
2003-02-27 07:21
2003.03.13
Модератор откликнись please...


14-39468
Microsofts
2003-02-23 18:12
2003.03.13
Где можно скачать бесплатно Яву?


3-39193
Настя
2003-02-20 16:04
2003.03.13
Помогите по поиску через Query