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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2010, 00:11   #1
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию SQL запрос, строковый тип

поле долгого геморроя я наконец сделал то что мне нужно и выглядит оно вот таким образом:
Код:
function gettexpath(TypeTex:string;ADOQuery:TADOQuery):string;
var
sql:string;
begin
  sql:='SELECT * FROM [textures$] where [name]='+TypeTex;
  FetchDataExel(ADOQuery,SQL);
 try
 gettexpath:=ADOQuery.Fields.FieldByName('path').Value;
 except
 ShowMessage( 'Не найден столбик path !');
 end;
end;
да, работает, но нельзя самому ввести имя т.к. [']-служебный символ и также нельзя записать запрос в виде sql:='...where [name]='+'''TypeTex+'''; по той же причине, пробовал вот так:
sql:='...where [name]='+string(TypeTex); но это сути не меняет и не работает.

Работаю с EXEL таблицами тот кусок который мне нужен выглядит так:
2 рядом столбика с названиями: name, path. Под ними находиться к примеру name=grass, a path=data\textures\trаva. В программе когда я в TypeTex записую 'grass' все нормально, но когда grass, то запрос выдает nil.

можно ли как-то поставить ' ' или как это можно обойти.
П.С. все потом будет на автомате.
П.С.С. вроде бы правил никаких не нарушил, если я не заметил, поправьте пожалуйста))
IvaniuS вне форума Ответить с цитированием
Старый 11.01.2010, 13:28   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

попробуй так
Код:
 sql:= format('SELECT * FROM [textures$] where [name]= %s', [QuotedStr(TypeTex)]);
soleil@mmc вне форума Ответить с цитированием
Старый 11.01.2010, 16:40   #3
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

не работает(((, а зачем " двойные кавычки? мб через них как-то
soleil@mmc тогда попутный вопрос, я часто такое вижу, форматы записи, но до сих пор не понял как оно и с чем его едят)

Последний раз редактировалось IvaniuS; 11.01.2010 в 16:57.
IvaniuS вне форума Ответить с цитированием
Старый 12.01.2010, 15:12   #4
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

сорри за флуд, но нужен ап теме
IvaniuS вне форума Ответить с цитированием
Старый 12.01.2010, 17:07   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от IvaniuS Посмотреть сообщение
не работает(((, а зачем " двойные кавычки? мб через них как-то
ты напиши сначала сам текст запроса как выглядит
так?
Код:
SELECT * 
FROM textures$
where name = 'grass'

Цитата:
Сообщение от IvaniuS Посмотреть сообщение
soleil@mmc тогда попутный вопрос, я часто такое вижу, форматы записи, но до сих пор не понял как оно и с чем его едят)
на любой вопрос можно ткнуть пальцем в Ф1 и почитать справку - полезно и интересно
soleil@mmc вне форума Ответить с цитированием
Старый 13.01.2010, 01:06   #6
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

ну это я для примера же привел там не только grass может быть да это ерный текст запроса который возвращает пусто), но если использовать эдит то все нормально т.е. вот так

Код:
sql:='SELECT * FROM [textures$] where [name]='+sqlt.text
где в  sqlt введено 'grass' именно с кавычками, иначе пусто
IvaniuS вне форума Ответить с цитированием
Старый 13.01.2010, 10:43   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

имхо ты голову всем морочиь
текст в эдит нужно вводить без апострофов, а в запросе их уже подставлять (вариантов море)
еще остется неясным момент регистра строк - оставим тебе решать этот вопрос
soleil@mmc вне форума Ответить с цитированием
Старый 13.01.2010, 21:58   #8
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

soleil@mmc покажи хоть 1 вариант из этого моря)))
IvaniuS вне форума Ответить с цитированием
Старый 14.01.2010, 11:21   #9
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

см. пост №2
и вводи в эдит без апострофов
еще варинт - руками прописать в запросе (другой вопрос что ты не умеешь)
и еще варинт - заюзать параметры в запрое

а еще лучше: любым доступным способом (мессагой, в мемо, в файл) выводи собранный текст запроса до его выполнения - сразу видно где и что не так
soleil@mmc вне форума Ответить с цитированием
Старый 14.01.2010, 15:54   #10
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

прочитал не понял чё человеку надо...
Код:
sql:='SELECT * FROM [textures$] where [name]='''+Edit1.text+'''
ну или
Код:
sql:='SELECT * FROM [textures$] where [name] like '''+Edit1.text+'%''
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
строковый тип gessi Помощь студентам 3 25.11.2009 09:40
Строковый тип Koshmarick Помощь студентам 8 05.11.2009 12:37
Символьный и строковый тип TwEEkcs Помощь студентам 1 24.06.2009 10:25
Строковый тип данных Mihael-Vlz Паскаль, Turbo Pascal, PascalABC.NET 7 23.04.2009 17:01
символьный и строковый тип. ribka Помощь студентам 4 02.12.2007 13:25