Текущий архив: 2003.11.17;
Скачать: CL | DM;
ВнизSQL Найти похожие ветки
← →
DimChan (2003-10-27 08:39) [0]День Добрый, МАСТЕРА! Вот ситуация, я получаю файлы DBF,все они отличаются по структуре (Количество столбцов), а моя программа по сути дела Поисковичок, так вот проблема заключается в следующем Задаю запрос:
QProba.Active := false;
QProba.SQL.Clear ;
QProba.SQL.Add ("Select * From "" + FilePath +"" Adress");
QProba.Active := true;
SenderStrName := edit1.Text ;
if SenderStrName = "" then exit;
SqlOr := (" or (");
SqlLike := (" Like "" + SenderStrName +"%")");
i := QProba.FieldCount - 1;
SetLength(Pole,i);
pole[0] := QProba.Fields[0].fieldName;
SqlStr := ("Select * From "" + FilePath +"" Adress where ( " + Pole[0] + SqlLike );
For n := 1 to i do
begin
pole[n] := QProba.Fields[n].fieldName;
sqlStr := (SqlStr + SqlOr + Pole[n] + SqlLike) ;
end;
QTable.Active := false;
QTable.SQL.Clear ;
QTable.SQL.Add (SqlStr);
QTable.Active := true; //< здесь показывает ошибку
DataSource2.dataSet := QTable;
DBGrid1.DataSource := DataSource2;
, но прога выдает EDBEngineError с ошибкой "Type mismatch in Expression", буду очень благодарен за любую помощь.
← →
DenK_vrtz (2003-10-27 08:43) [1]Перед QTable.Active := true; выведи текст запроса и посмотри, что получается
← →
DimChan (2003-10-28 08:21) [2]Select * From "C:\Adress\Adress.dbf" Adress where ( NUMBER Like "A%") or (Name Like "A%") or (TU Like "A%") or (NAMEU Like "A%") or (INFO1 Like "A%") or (INFO2 Like "A%") or (INFO3 Like "A%") or (INFO4 Like "A%") or (INFO5 Like "A%") or (INFO6 Like "A%") or (INFO7 Like "A%") or (INFO8 Like "A%") or (INFO9 Like "A%") or (INFO10 Like "A%") or (INFO11 Like "A%") or (GR Like "A%") or (SD_RG_VD Like "A%") or (AMR_ADRESS Like "A%")
← →
DenK_vrtz (2003-10-28 08:58) [3]( NUMBER Like "A%") - наводит не на добрые мысли
и еще попробовать убрать все скобки
← →
Илайдж (2003-10-28 08:58) [4]1 - Select * From "C:\Adress\Adress.dbf" Adress
2 - "" замени за ""
← →
Илайдж (2003-10-28 09:07) [5]2 DenK_vrtz
запрос Select * from table where intfield like "%1%" проходит, по крайней мере в MSSQL2k
← →
DimChan (2003-10-28 10:59) [6]
> Илайдж © (28.10.03 08:58) [4]
> 1 - Select * From "C:\Adress\Adress.dbf" Adress
> 2 - "" замени за ""
1. Я убрал ADRESS, убрал скобки - результат тот же;
2. замена не допустима
> Илайдж © (28.10.03 09:07) [5]
> 2 DenK_vrtz
> запрос Select * from table where intfield like "%1%" проходит,
> по крайней мере в MSSQL2k
- Ты прав это верно, так же как и "1%", разница лишь в том, что здесь он ищет по началу строки, а не в строке.
Я руками исключил из поиска поля с типом данных NUMERIC, все хорошо, только проблема как программно исключить их.
← →
Bob (2003-10-28 11:15) [7]А ты попробуй поиграть со свойством FieldType. Типа того, если поле не строковое (символьное), а NUMERIC то переходи к следующему полю
← →
Илайдж (2003-10-28 11:17) [8]Можно попробовать оттолкнуться от Query1.Fields[i].ClassName
проверять на то что это TStringField и дальше добавлять в запрос
← →
DenK_vrtz (2003-10-28 11:20) [9]if QProba.Fields[n].DataType = ftFloat then
showmessage("Поле Float");
← →
DimChan (2003-10-29 08:29) [10]Я сделал нижеследующее, но дает ошибку, не позволяет присвоить значение:
if qproba.fields[x].ClassName = "TStringField" then
begin
y := y+1;
SetLength (SProba,y);
SProba[y] := QProba.Fields[x].FieldName ; SqlStr := SqlStr + ", " + SProba[y];
RichEdit1.Text := SqlStr;
end ;
Страницы: 1 вся ветка
Текущий архив: 2003.11.17;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.01 c