Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
1-56692
ilka
2003-11-07 16:38
2003.11.17
c VB на Delphi


1-56672
Stas
2003-11-05 09:14
2003.11.17
Запуск файла из TMemoryStream


1-56591
bon
2003-11-06 10:13
2003.11.17
PageControl


1-56563
Zheks
2003-11-06 13:41
2003.11.17
Заполнение всех Edit_ов на форме


14-56810
Карелин Артем
2003-10-24 14:47
2003.11.17
Посоветуйте систему контроля версий. Дельфи.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский