Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2010, 04:01   #1
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию Несовпадение типов String и Duble

Мучаюсь часа 1.5 не могу понять в чем ошибка, буду признателен за помощь.ttt.JPG
Код:
  private
    { Private declarations }
       function o(sqlzap: string; aq: TADOQuery): variant;
  public
    { Public declarations }
  end;

var
  F_GRAF: TF_GRAF;

implementation

uses Unit1, Unit2;

{$R *.dfm}
function TF_GRAF.o(sqlzap: string; aq: TADOQuery): variant;
begin
result:=sqlzap;
aq.close;
aq.sql.clear;
aq.sql.add(sqlzap);
aq.Open;
end;

procedure TF_GRAF.FormActivate(Sender: TObject);
var
i,kolii: integer;
begin
//жалуется на запрос, хотя в СУБД все тянет...
o('SELECT COUNT(familiya) AS KOL FROM pacient pt LEFT OUTER JOIN osnovnoy_soputstvuyhiy_diagnoz osd ON ' +
'pt.id_pacienta=osd.id_pacienta INNER JOIN diagnoz dz ON osd.id_diagnoza=dz.id_diagnoza WHERE dz.id_diagnoza='+gl_f.dblcb1.KeyValue+'',dm.ADOQCHART);
kolii:=dm.ADOQCHART.fieldbyname('KOL').AsInteger;
end;
end.
Такое ощущение что в функции косяк... Но писал и без нее все равно ошибка та же.
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 21.05.2010, 05:45   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

попробуйте тотже запрос но с использованием параметров
Код:
dm.ADOQCHART.SQL.Text:=('SELECT COUNT(familiya) AS KOL FROM pacient pt LEFT OUTER JOIN osnovnoy_soputstvuyhiy_diagnoz osd ON ' +
'pt.id_pacienta=osd.id_pacienta INNER JOIN diagnoz dz ON osd.id_diagnoza=dz.id_diagnoza WHERE dz.id_diagnoza=:pr1');
dm.ADOQCHART.Parameters.ParamByName('pr1').Value:=  gl_f.dblcb1.KeyValue;
dm.ADOQCHART.Open;
vovk вне форума Ответить с цитированием
Старый 21.05.2010, 13:19   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

выделенное лишнее
Код:
o('SELECT COUNT(familiya) AS KOL FROM pacient pt LEFT OUTER JOIN osnovnoy_soputstvuyhiy_diagnoz osd ON ' +
'pt.id_pacienta=osd.id_pacienta INNER JOIN diagnoz dz ON osd.id_diagnoza=dz.id_diagnoza WHERE dz.id_diagnoza='+gl_f.dblcb1.KeyValue+'',dm.ADOQCHART);
а gl_f.dblcb1.KeyValue скорее всего придется переводить в стринг
Код:
+ IntToStr(gl_f.dblcb1.KeyValue)
неделю назад ты уже задавал подобный вопрос - начни пользоваться параметрами - будешь меньше на грабли наступать
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несовпадение типов данных IraPr Microsoft Office Access 4 02.05.2010 13:56
Как получить адрес String строки или преобразовать String madboy4ik Общие вопросы по Java, Java SE, Kotlin 6 15.01.2010 11:57
Несовпадение типов (Delphi) VadEr Помощь студентам 8 30.11.2009 18:22
Несовпадение типов ILOR Помощь студентам 5 26.11.2008 13:56
Несовпадение с датой RoZi Помощь студентам 26 28.11.2007 13:05