![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вставка данных в таблицу
Ира © (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 ...)?, ты же дельфе программируешь!!! есть методы инсерт соответствующих компонентов