Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.05.2008, 21:33
Аватар для Raccoon
Raccoon Raccoon вне форума
Прохожий
 
Регистрация: 07.05.2008
Сообщения: 20
Репутация: 10
По умолчанию String or binary data would be trancated

такая проблема: то, что ввожу в edit, записываю в таблицу. При этом возникает ошибка: String or binary data would be trancated. Типа поля integer, размер 4.
Причём размер поля не привышаю, т.е. ввожу хоть один символ - всё равно ошибка.
Помогите, пожалуйста, что делать?
__________________
Нуб в Delphi Прошу проникнуться.
Ответить с цитированием
  #2  
Старый 23.05.2008, 10:30
Phedor Phedor вне форума
Начинающий
 
Регистрация: 28.02.2008
Сообщения: 118
Репутация: 21
По умолчанию

Цитата:
Сообщение от Raccoon
такая проблема: то, что ввожу в edit, записываю в таблицу. При этом возникает ошибка: String or binary data would be trancated. Типа поля integer, размер 4.
Причём размер поля не привышаю, т.е. ввожу хоть один символ - всё равно ошибка.
Помогите, пожалуйста, что делать?

Уточните как происходит запись в базу.
Почему символ? Вы пытаетесь в Integer (число) записать символ?
При нажатии на кнопку?
Table1.Edit;
Table1.FieldByName('FieldInteger').AsInteger := StrToInt(Edit1.Text);
Table1.Post;
Ответить с цитированием
  #3  
Старый 23.05.2008, 12:56
Аватар для Raccoon
Raccoon Raccoon вне форума
Прохожий
 
Регистрация: 07.05.2008
Сообщения: 20
Репутация: 10
По умолчанию

P - пароль в таблице с клиентами. Делаю так.

Var
P: Integer;
begin
(при проверке на наличие клиента с таким же паролем всё работает. Запись в базу выдаёт ошибку.)
...

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:=('Insert INTO Customers (LastName, FirstNam... ...Pass) values ('''+ Edit1.Text +''', ''' + Edit2.Text +'''...'''+Edit6.Text+''')');
ADOQuery1.ExecSQL;
__________________
Нуб в Delphi Прошу проникнуться.
Ответить с цитированием
  #4  
Старый 23.05.2008, 13:31
xchrom xchrom вне форума
Начинающий
 
Регистрация: 08.04.2008
Сообщения: 177
Репутация: 15
По умолчанию

по моему в кавычки значение пароля заключать не надо, а надо преобразовывать к инт, но могу и ошибаться
Ответить с цитированием
  #5  
Старый 23.05.2008, 15:45
Аватар для Raccoon
Raccoon Raccoon вне форума
Прохожий
 
Регистрация: 07.05.2008
Сообщения: 20
Репутация: 10
По умолчанию

Очень хочется сделать вот так
ADOQuery1.SQL.Text:=('Insert INTO Customers (LastName, FirstNam... ...Pass) values ('''+ Edit1.Text +''', ''' + Edit2.Text +'''...StrToInt(Edit6.Text))');
но тут тоже какая-то ошибка.
__________________
Нуб в Delphi Прошу проникнуться.
Ответить с цитированием
  #6  
Старый 23.05.2008, 15:47
xchrom xchrom вне форума
Начинающий
 
Регистрация: 08.04.2008
Сообщения: 177
Репутация: 15
По умолчанию

уж тогда весь запрос напиши, скорее вего синтаксис где то нарушен
Ответить с цитированием
  #7  
Старый 23.05.2008, 16:11
Phedor Phedor вне форума
Начинающий
 
Регистрация: 28.02.2008
Сообщения: 118
Репутация: 21
По умолчанию

Цитата:
Сообщение от Raccoon
Очень хочется сделать вот так
ADOQuery1.SQL.Text:=('Insert INTO Customers (LastName, FirstNam... ...Pass) values ('''+ Edit1.Text +''', ''' + Edit2.Text +'''...StrToInt(Edit6.Text))');
но тут тоже какая-то ошибка.

Правильно, ошибку будет выдавать. Вы число в строку пытаетесь засунуть (IntToStr(Edit6.Text)). Нужно так:
ADOQuery1.SQL.Text:=('Insert INTO Customers (LastName, FirstNam... ...Pass) values ('''+ Edit1.Text +''', ''' + Edit2.Text +'''...Edit6.Text)');

Также смотря какая база, нужно либо одинарную кавычку, либо двойную использовать, попробуйте заменить.
Ответить с цитированием
  #8  
Старый 23.05.2008, 16:19
xchrom xchrom вне форума
Начинающий
 
Регистрация: 08.04.2008
Сообщения: 177
Репутация: 15
По умолчанию

Pass у нее целое, потому кавычки не надо
Ответить с цитированием
  #9  
Старый 23.05.2008, 16:46
Аватар для Raccoon
Raccoon Raccoon вне форума
Прохожий
 
Регистрация: 07.05.2008
Сообщения: 20
Репутация: 10
По умолчанию

запрос такой:
Код:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:=('Insert INTO  Customers (LastName, FirstName, Par, Gender, City, Year, HomePhone, Handy, Pass) values ('''+ Edit1.Text +''', ''' + Edit2.Text +''', '''+ Edit3.Text +''', '''+ComboBox1.Text+''', '''+Edit4.Text+''','''+Edit5.Text+''', '''+MaskEdit2.Text+''', '''+ MaskEdit1.Text +''', '''+Edit6.Text+''')');
ADOQuery1.ExecSQL;

Admin: Пользуемся тегами!
__________________
Нуб в Delphi Прошу проникнуться.

Последний раз редактировалось Admin, 23.05.2008 в 19:15.
Ответить с цитированием
  #10  
Старый 26.05.2008, 10:09
xchrom xchrom вне форума
Начинающий
 
Регистрация: 08.04.2008
Сообщения: 177
Репутация: 15
По умолчанию

какие поля НЕ СТРОКИ?

попробуй вот что не строковые поля не заключать значения в кавычки а преобразовывать к типу поля, проверь длины строк также, чтобы в edit-ах ограниченно размером поля было
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter