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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.12.2010, 13:34
nanometr nanometr вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 11
Репутация: 10
По умолчанию Помогите разобраться с ComboBox

есть такой вот кусок кода:
Код:
with DataModule1.Query1 do
        begin
        Parameters.ParamByName('param1').Value :=ComboBox1.Text;
        Parameters.ParamByName('param2').Value :=ComboBox2.Text;
        Parameters.ParamByName('param3').Value :=ComboBox3.Text;
        execSql;
        end;
все параметры типа string.
Вылезает ошибка "Приложение использует для текущей операции значение неверного типа."

Объясните пожалуйста, что тут не так. Не могу понять, чем тут типы то не угодили...

sql скрипт просто в базу добавляет записи insert`ом.

Последний раз редактировалось Admin, 13.12.2010 в 13:39.
Ответить с цитированием
  #2  
Старый 13.12.2010, 15:12
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Кавычки однако нужны...
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 13.12.2010, 15:16
nanometr nanometr вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 11
Репутация: 10
По умолчанию

где они нужны? Параметры у меня в кавычках.
Ответить с цитированием
  #4  
Старый 13.12.2010, 18:12
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Текст запроса покажите. Обычно такая ошибка происходит когда пытаются сцепить текст и число или при сравнении ожидается текст, а передается неизвестная константа.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 13.12.2010, 18:32
Аватар для movnet
movnet movnet вне форума
Начинающий
 
Регистрация: 24.07.2008
Сообщения: 127
Версия Delphi: Delphi 7
Репутация: 23
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Кавычки однако нужны...
Код:
Parameters.ParamByName('param1').Value := #39+ComboBox1.Text+#39;

Последний раз редактировалось movnet, 13.12.2010 в 18:36.
Ответить с цитированием
  #6  
Старый 13.12.2010, 18:38
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

я вообще не знаю у TQuery (судя по имени Query1) свойства "Parameters" (Delphi 3-Delphi 7) есть Params: TParams! а классический механизм выполнения SQL запроса, не возвращающего набор данных (cursor):
Код:
  with Query1 do
  begin
    Prepare;
    ParamByName('Param1').AsString:=Caption;
    ParamByName('Param2').AsInteger:=Tag;
    ParamByName('Param3').AsBoolean:=Visible;
    ExecSQL;
  end;
но, имхо, можно и всем ParamByName('ParamХ').AsString:=strValue;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 14.12.2010, 10:59
nanometr nanometr вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 11
Репутация: 10
По умолчанию

текст запроса проще некуда:
SQL
Код:
INSERT INTO Table1(field1,field2)
VALUES(:param1,:param2) 

ничего из выше перечисленного не заставило ошибку изчезнуть((((
Может есть еще какие нибудь варианты решения?
Ответить с цитированием
  #8  
Старый 14.12.2010, 11:01
nanometr nanometr вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 11
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
я вообще не знаю у TQuery (судя по имени Query1) свойства "Parameters" (Delphi 3-Delphi 7) есть Params: TParams! а классический механизм выполнения SQL запроса, не возвращающего набор данных (cursor):
Код:
  with Query1 do
  begin
    Prepare;
    ParamByName('Param1').AsString:=Caption;
    ParamByName('Param2').AsInteger:=Tag;
    ParamByName('Param3').AsBoolean:=Visible;
    ExecSQL;
  end;
но, имхо, можно и всем ParamByName('ParamХ').AsString:=strValue;

А на такое вообще Delphi 7 изругалась. Сказало, что Prepare и ParamByName неопределенные переменные.
Ответить с цитированием
  #9  
Старый 14.12.2010, 11:16
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от nanometr
А на такое вообще Delphi 7 изругалась. Сказало, что Prepare и ParamByName неопределенные переменные.
уверены, что все-таки Delphi запускаете? попробуйте откомпилить, запускать не надо:
http://data.cod.ru/79774
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables;

type
  TForm1 = class(TForm)
    Query1: TQuery;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  with Query1 do
  begin
    Prepare;
    ParamByName('Param1').AsString:=Caption;
    ParamByName('Param2').AsInteger:=Tag;
    ParamByName('Param3').AsBoolean:=Visible;
    ExecSQL;
  end;
end;

end.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #10  
Старый 14.12.2010, 11:26
nanometr nanometr вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 11
Репутация: 10
По умолчанию

возникло недопонимание Я исплользую TADOQuery. А то что скинули Вы, откомпилировалось нормально.

Последний раз редактировалось nanometr, 14.12.2010 в 11:28.
Ответить с цитированием
  #11  
Старый 14.12.2010, 12:38
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

А поля в базе в которые пишите все стринговые?
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #12  
Старый 14.12.2010, 13:53
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

-удали это компонент TADOQuery из TDataModule и добавь новый TADOQuery
-назови также, чтобы код не переписывать
-задать свойству Connection соотв. компонент TADOConnection
-TADOConnection сделать Connected = True
-в свойство SQL впиши свой запрос "insert into..."
-пробовать запустить
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #13  
Старый 14.12.2010, 13:57
nanometr nanometr вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 11
Репутация: 10
По умолчанию

Поля все стринговые в базе.
Сейчас попробую удалить компонент и занова все сделать.. Хотя я так уже пробывал пару раз, не помогло.
Ответить с цитированием
  #14  
Старый 14.12.2010, 14:06
nanometr nanometr вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 11
Репутация: 10
По умолчанию

и снова не помогло. я подумываю весь дата модуль убить с заного сделать может..
В чем может быть проблема? Не понимаю.
Ответить с цитированием
  #15  
Старый 14.12.2010, 14:12
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

в дизайнере щелкни на свойство Parameters и смотри какие типы у параметров (DataType). можно попробовать всем сделать ftWideString.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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