Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вставка данных в таблицу


Ира ©   (2004-09-03 13:27:00) 

Подскажите пожалуйста, как решить следующую проблему:
в таблицу через форму ввода вносятся данные о клиенте: фамилия, номер ИНН, номер расчетного счета, контактный телефон и т.д. проблема в том, что не у всех клментов есть весть перечень данных, т.е. некоторые поля могут оставаться пустыми, но если делать следующий запрос на вставку, то при наличии пустых параметров вызывается исключение:
sql.SQL.Add('INSERT INTO clients (name, inn, rs, tel) ');
sql.SQL.Add('VALUES (:namer, :inn, :rs, :tel) ');
sql.Parameters.ParseSQL(sql.SQL.Text, True);
sql.Parameters.ParamByName('name').Value := Name.text;
sql.Parameters.ParamByName('inn').Value := INN.Text;
sql.Parameters.ParamByName('rs').Value := Account.text;
sql.Parameters.ParamByName('tel').Value := Tel.text;
try
 sql.ExecSQL;
except
 on E:Exception do ShowMessage(E.Message);
end;


Nikolay M.   (2004-09-03 16:06:00) [1]


> Ира   (03.09.04 14:11) [8]
> if Tel.text='' then sql.Parameters.ParamByName('tel').Clear
>
> говорит Undeclaired Identifier Clear :((((

.Value := nil?


AndB   (2004-09-03 15:46:00) [2]

а так?:
sqlStr := 'INSERT INTO clients (name, inn, rs, tel)  VALUES (';
if (Trim(Name.text) = '') then sqlStr := sqlStr + 'NULL'+#44 else sqlStr := sqlStr + #39+Name.text+#39#44;
if (Trim(INN.Text) = '') then sqlStr := sqlStr + 'NULL'+#44 else sqlStr := sqlStr + #39+INN.Text+#39#44;
if (Trim(Account.text) = '') then sqlStr := sqlStr + 'NULL'+#44 else sqlStr := sqlStr + #39+Account.text+#39#44;
if (Trim(Tel.text) = '') then sqlStr := sqlStr + 'NULL' else sqlStr := sqlStr + #39+Tel.text+#39;
sqlStr := sqlStr + ')';
sql.SQL.Clear;  sql.SQL.Add(sqlStr);
sql.ExecSQL;

а что? даже INN - текст?


Роман Снегирев   (2004-09-03 15:16:00) [3]

Что же делать??? Кто-нибудь подскажет?
стреляться, что же еще. а в адо наверняка есть какие-то подобные конструкции, а вообще, что у тебя за БД, может вообще стоит отказаться от адо?


Ира   (2004-09-03 14:32:00) [4]

Что же делать??? Кто-нибудь подскажет?


Sergey13   (2004-09-03 14:19:00) [5]

А, сори. Я про TQuery. АДО не рулил ни разу.


Ира   (2004-09-03 14:16:00) [6]

var sql: TADOQuery;
.....
sql:=TADOQuery.Create(nil);


Ира   (2004-09-03 14:15:00) [7]

Тоже самое говорит при:
sql.Parameters.ParamByName('tel').AsString -
undeclaired indentifier AsString;


Sergey13   (2004-09-03 14:15:00) [8]

2[8] Ира   (03.09.04 14:11)
А что за компонент у тебя sql? Кстати зачем так называть то?


Ира   (2004-09-03 14:11:00) [9]

if Tel.text='' then sql.Parameters.ParamByName('tel').Clear
говорит Undeclaired Identifier Clear :((((


Sergey13   (2004-09-03 13:53:00) [10]

2 [6] Ира   (03.09.04 13:48)
Ничего не делай. Clear ставит параметр в NULL. Он и запишется в БД.


Ира   (2004-09-03 13:48:00) [11]

2Sergey13
А с этим что делать:
sql.SQL.Add('VALUES (:namer, :inn, :rs, :tel) '); ???? - вот ведь они еще где эти параметры-то...


Sergey13   (2004-09-03 13:44:00) [12]

2Ира   (03.09.04 13:27)
А так не получится?
if Tel.text='' then sql.Parameters.ParamByName('tel').Clear


Zacho   (2004-09-03 13:36:00) [13]

2 Ира   (03.09.04 13:27) :
Вместо Value используй AsString

2 Ира   (03.09.04 13:33) [2]:

TQuery, например. :)


Klerk   (2004-09-03 13:34:00) [14]

У меня тот же вопрос в этом форуме:(


Ира   (2004-09-03 13:33:00) [15]

Каких? Подскажите плиз...


Роман Снегирев   (2004-09-03 13:32:00) [16]

а зачем вообще делать SQL.ADD(insert into ...)?, ты же дельфе программируешь!!! есть методы инсерт соответствующих компонентов


Наверх

Титульная страница Поиск, карта сайта Написать письмо