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

Вниз

Не получается удалить строку из таблицы   Найти похожие ветки 

 
Дмитрий   (2010-05-15 17:13) [0]

Добрый день,bзвеняюсь что отвлекаю, но у меня не большой вопрос. Есть аксесовская база данных и у одной из ее таблиц мне надо программно удалять строку. Все строки таблици хронятся в combobox-e  и я с помощью sql-запроса пытаюсь удалять, но выдает ошибку:" Параметр Гост не имеет значения по умолчанию", Гост- название таблицы. Листинг:
DataModule2.ADOQuery1.Active:=false;
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.Add("DELETE");
DataModule2.ADOQuery1.SQL.Add("FROM (select* from Спецификация) Спецификация");
DataModule2.ADOQuery1.SQL.Add("WHERE Гост= """+ComboBox1.Items.Strings[ComboBox1.ItemIndex]+"""");
DataModule2.ADOQuery1.Active:=true;
Помогите пожалуст, а то всю голову сломал))


 
YurikGL ©   (2010-05-15 17:16) [1]

Для начала
1) в базе переименуй все на английский
2) Если правильно помню, русские названия в запросах в Access нужно в квадратные скобки брать.
3) ("FROM (select* from Спецификация) Спецификация"); что этим хотел сказать?
4) Предварительно отрабатывай запросы в самом Accesse


 
Palladin ©   (2010-05-15 17:27) [2]

поправка
2) в кв. скобки брать все названия объектов которые содержат, несовместимые с SQL92, символы (для mssql, jet)
4) глупость хотел сказать ) и получилось


 
YurikGL ©   (2010-05-15 17:30) [3]


> 4) глупость хотел сказать ) и получилось

Не понял?
Имелось в виду, что тексты запросов проще отрабатывать в Access.


 
Palladin ©   (2010-05-15 17:31) [4]

обшибся нумбером
"4) глупость хотел сказать ) и получилось"
читать как
"3) глупость хотел сказать ) и получилось"


 
Германн ©   (2010-05-15 17:54) [5]


> DataModule2.ADOQuery1.Active:=true;

А это вообще бред.


 
Anatoly Podgoretsky ©   (2010-05-15 18:08) [6]

> Дмитрий  (15.05.2010 17:13:00)  [0]

Используй АdoCommand

Используй парамеры

Чему равен DataModule2.ADOQuery1.SQL.Text?


 
Anatoly Podgoretsky ©   (2010-05-15 18:11) [7]


> А это вообще бред.

А что здесь не бред? Вроде ничего.


 
turbouser ©   (2010-05-15 18:23) [8]


> Германн ©   (15.05.10 17:54) [5]
>
>
> > DataModule2.ADOQuery1.Active:=true;
>
> А это вообще бред.

Это с какого перепугу бред?
Вполне нормально. В сеттере на Active тот же Open делается, на сколько помню.


 
turbouser ©   (2010-05-15 18:24) [9]

А :) там delete :)


 
Smile   (2010-05-15 18:26) [10]

> Германн ©   (15.05.10 17:54) [5]

А, собственно, что "криминального" ты нашел в
DataModule2.ADOQuery1.Active:=true;
ну и тем более "бредового"
:)
Интерес, действительно, представляет уточнение от
Anatoly Podgoretsky ©   (15.05.10 18:08) [6], а именно
Чему равен DataModule2.ADOQuery1.SQL.Text?


 
turbouser ©   (2010-05-15 18:28) [11]


> Smile   (15.05.10 18:26) [10]

delete же. Exec нужно.


 
Smile   (2010-05-15 18:34) [12]

в данном случае, конечно же, но мне показалось, что Германн просто органически не принимает такую конструкцию
:)
пардон за вальяжность, и прошу извинения
:(


 
Германн ©   (2010-05-15 18:39) [13]


> но мне показалось

Когда кажется, креститься надо!
Народная мудрость. :)


 
Smile   (2010-05-15 18:42) [14]

возразить нечем, согласен
:)


 
Anatoly Podgoretsky ©   (2010-05-15 19:46) [15]

> Smile  (15.05.2010 18:42:14)  [14]

Тут возражай не возражай, а все равно переписать все нафиг.


 
Дмитрий   (2010-05-15 20:18) [16]

ответов много ноя так ни че и не понял))). Не много подправил теперь не ругается но и не удаляет.
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("DELETE*");
ADOQuery1.SQL.Add("FROM ТаблицаГост");
ADOQuery1.SQL.Add("WHERE Название=:poisk");
ADOQuery1.Parameters.ParamByName("poisk").Value:=ComboBox1.items.Strings[ComboBo x1.ItemIndex];
Не могу понять что не так. Объясните пожалуста и если можно на примере.
Заранее благодарен.


 
turbouser ©   (2010-05-15 20:20) [17]


> ComboBox1.items.Strings[ComboBo x1.ItemIndex];

Жжуть..
ComboBox1.items[ComboBox1.ItemIndex];
Но всеравно Жжуть..


 
Плохиш ©   (2010-05-15 20:22) [18]

DELETE
FROM (select* from Спецификация) Спецификация
WHERE Гост= "чё-то"


> Гост- название таблицы

Вот это полёт фантазии. Это я уважаю
Отсыпте грибочков.


 
Плохиш ©   (2010-05-15 20:23) [19]


> Дмитрий   (15.05.10 20:18) [16]

Что такое звёздочка в вашем сверхудивительном запросе?


 
Дмитрий   (2010-05-15 20:24) [20]

Опечатка))


 
Плохиш ©   (2010-05-15 20:25) [21]


> Дмитрий   (15.05.10 20:24) [20]
>
> Опечатка))

Ну так исправляйте и другии опечатки в вашем суперкоде.


 
Дмитрий   (2010-05-15 20:27) [22]

А где конкретнее они присутствуют?


 
Дмитрий   (2010-05-15 20:28) [23]

И если не затруднит вас Плохиш, покажите на примере как вы это реализовываете, если это конечно не затруднит?


 
turbouser ©   (2010-05-15 20:33) [24]

лови..
with ADOQuery1 do
 begin
   SQL.Text:="DELETE FROM ТаблицаГост WHERE Название=:poisk");
   Parameters.ParamByName("poisk").Value:=ComboBox1.items[ComboBox1.ItemIndex];
   ExecSQL;
 end


 
turbouser ©   (2010-05-15 20:34) [25]

еще бы try except finally, но это домашнее задание.


 
Плохиш ©   (2010-05-15 20:36) [26]


> turbouser ©   (15.05.10 20:33) [24]

Подаёшь немощным?


 
Дмитрий   (2010-05-15 20:38) [27]

Большое спасибо. Все заработало)))


 
Anatoly Podgoretsky ©   (2010-05-15 21:09) [28]


> Не могу понять что не так.

Отсутствует вызов, на удаление.



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

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.054 c
15-1266830272
Игорь
2010-02-22 12:17
2010.08.27
Все что НЕ нужно начинающему программисту


15-1267798757
Jeer
2010-03-05 17:19
2010.08.27
Любимым и дорогим Женщинам.


2-1272814938
TechnoDreamer
2010-05-02 19:42
2010.08.27
Контейнер


15-1271923529
oxffff
2010-04-22 12:05
2010.08.27
Задачка про generics C#


2-1268099427
Б
2010-03-09 04:50
2010.08.27
Fill pointer.