Форум: "Базы";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
ВнизADO, EXCEL и типы данных. Найти похожие ветки
← →
DmitryNekl (2003-07-09 20:51) [0]Вопрос довольно глупый, но все же надеюсь на вашу помощь.
Ситуация такая. Есть таблица в Экселе, в которой данные разных типов: и целые числа, и строки. Подключаемся к ней с помощью ADO и пытаемся выполнить запрос (объявления переменных и все лишнее я убрал):
function a(Field1, Field2, WorkSheet: string): string;
// Field - поле в Экселе, которое ищем
// WorkSheet - он и есть :)
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("SELECT DISTINCT " + Field1 + " FROM ["+ WorkSheet + "$]");
ADOQuery1.Active:=True;
ADOQuery1.ExecSQL;
ADOQuery1.First;
s:="";
For i:=0 to ADOQuery1.RecordCount-1 do
begin
s:=s + ADOQuery1.FieldByName(""+Field1+"").AsString;
ADOQuery2.SQL.Clear;
stmp:="SELECT DISTINCT "+Field2+" FROM ["+ WorkSheet + "$] WHERE "+ Field1+"="+""""+ADOQuery1.FieldByName(""+Field1+"").AsString+"""";
ADOQuery2.SQL.Add(stmp);
ADOQuery2.Active:=True;
ADOQuery2.ExecSQL;
и т.д.
Короче говоря, суть в том, что параметрами Field1 и Field2 можно управлять запросом. И хочется, чтобы эта функция работала с любыми данными.
Если данные в Экселе строковые, то все работает, как надо.
Если данные в Экселе числовые, то строка stmp:="SELECT DISTINCT "+Field2+" FROM ["+ WorkSheet + "$] WHERE "+ Field1+"="+""""+ADOQuery1.FieldByName(""+Field1+"").AsString+""""; приводит к ошибке "Несоответствие типов данных в выражении условия отбора". Если эту строку поменять на stmp:="SELECT DISTINCT "+Field2+" FROM ["+ WorkSheet + "$] WHERE "+ Field1+"="+ADOQuery1.FieldByName(""+Field1+"").AsString; (т.е. убрать кавычки), то все наоборот: с числами работает, а со строками - нет.
Вопрос: как написать универсальный запрос, который будет работать с любыми данными?
Заранее спасибо.
← →
sniknik (2003-07-09 22:15) [1]делай приведение типа, вроде
SELECT iif(isNumber(Field1), CStr(Field1), Field1) as Field1 ...
всегда вернет строку (если конечно как говориш всего 2 типа в поле)
то же можно и в условии.
а вот универсальный для любых данных будет посложнее, но стоит ли? если нужно попробуй.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c