Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.008 c
1-39340
Ag2002
2003-03-01 13:22
2003.03.13
Сложение


3-39214
z_olga_al
2003-02-22 09:31
2003.03.13
Замена даты в табл.Paradox


14-39526
pcgamer
2003-02-26 11:45
2003.03.13
Кодеры () и дизайнеры. Давайте объединяться и обмениваться инфой.


3-39230
iusup
2003-02-22 22:15
2003.03.13
Как сохранить изменения в DB...?


7-39593
AuX
2002-12-18 21:59
2003.03.13
Смена IP сетевухи в винь без перезагруза машины.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский