Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];

Вниз

Обновление записи.   Найти похожие ветки 

 
Malyatko   (2002-02-11 08:26) [0]

Уважаемые Метры баз данных. Появилась проблема с которой не могу справиться сам.А суть ее такова: есть таблица в которой 4 поля:

Cust_no - ключевое поле данной таблицы.
Firm_no - ссылки на номера фирм из другой таблице.
Tovar_no - ссылка на номере товаров из третей таблице.
Col - количество товара.

Необходимо изменить значения поля Col имеея значения Firm_no и Тоvar_no,не трогая Cust_no.
Пробовал сделать так:

if (FirstQuery.Locate("firm_no",firm_nomer,[loPartialKey]))
and (FirstQuery.Locate("tovar_no",tovar_nomer,[loPartialKey]))
then
begin
FirstQuery.Edit;
FirstQueryCOL.AsInteger:=NewCol;
FirstQuery.Post;
end;

Но как результат получал изменение в первом попавшейся записи где firm_no=firm_nomer,не учитывая значения tovar_nomer.

Не знает ли кто, как решить данную проблему? Буду благодарен за любую помощь.


 
fnatali   (2002-02-11 08:56) [1]

Попробуй так:
With Query1 do
begin
SQL.clear;
SQL.add("update table1 col=""+NewCol+""");
SQL.add("where firm_no=""+firm_nomer+"" and tovar_no=""+tovar_nomer+""");
execSQL;
end;
Или такой же запрос можно с параметрами сделать, передавая туда значения NewCol, firm_nomer и tovar_nomer.


 
Gregory   (2002-02-11 08:58) [2]

Используй SQL оператор UPDATE. Правда, если ты потом изменившиеся в БД данные сам перечитаешь (в том плане что в связных DataControl"ах они не поменяются).

1) Создай Query1 : TQuery
2) В свойстве SQL напиши

UPDATE table1
SET Col = :p_col
WHERE Firm_no = :p_firmno
AND Tovar_no = :p_tovarno

3) Зайди в свойство Params (через Object Inspector) и проставь типы для данных параметров (String, там или Integer ...)
4) Используй:

Query1.ParamByName( "p_firmno" ).AsInteger := firm_nomer;
Query1.ParamByName( "p_tovarno" ).AsInteger := tovar_nomer;
Query1.ParamByName( "p_col" ).AsInteger := NewCol;
Query.ExecuteSQL;


 
Sima   (2002-02-11 09:09) [3]

Так не пробовали? Ведь так еще легче.

if FirstQuery.Locate("firm_no;tovar_nomer",VarArrayOf([firm_nomer,tovar_nomer]),[loPartialKey])) then

begin
FirstQuery.Edit;
FirstQueryCOL.AsInteger:=NewCol;
FirstQuery.Post;
end;



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
1-19234
kaif
2002-02-17 17:55
2002.03.07
Как спастись от авторазмера MDIChildren?


3-19078
Jim
2002-02-06 12:36
2002.03.07
Как запихнуть запросы в DLL?


1-19195
sammy
2002-02-18 14:16
2002.03.07
условие в Install Shield


1-19228
dart
2002-02-19 12:21
2002.03.07
Один вопрос... :)


3-19099
kserg@ukr.net
2002-02-07 10:53
2002.03.07
Нужен совет: что лучше использовать для создания отчетов?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский