|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Проблема с отображеннием данных
При нажатии поиска в программе вместо данных выводит (MEMO), но на другом компе у меня дома все нормально. База .acdb провайдер oldb 12 ставил все что нашел. Не помню что бы дома что то специфичное такое ставил. Не отображает только в поиске. В чем проблема?
|
#2
|
||||
|
||||
Код в студию.
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |
#3
|
|||
|
|||
Почему-то при использовании запроса (не таблицы) при получении данных из нового Аксеса, Дельфи воспринимает результат как BLOB или CLOB. Что-то там не срастается нормально. Попытка принудительной конвертации типа в самом запросе не помогает. Можно попробовать создать поля в соответствующем TADOQuery с принудительном указанием типа.
Еще вариант - компиляция в версии с поддержкой Unicode или в более свежей версии (что-нить типа XE3 или выше), может там что с имплементацией ADO со стороны Дельфей поправили... И еще вариант - переход на другую библиотеку доступа к данным (например, dbExpress или FireDAC). |
#4
|
|||
|
|||
Цитата:
Код:
unit SearchQuery; interface uses SysUtils; function GetSearchQuery(Str : String) : String; implementation function GetSearchQuery(Str : String) : String; const TblCPU : Array [1..2] Of String = ( '[Процессоры_AMD]', '[Процессоры intel]' ); Tbl : Array [1..25] Of String = ( '[Звук карта ASUS]', '[Звук карта Creative]', '[hdd Hitachi]', '[hdd Seagate]', '[Оперативная память Kingston]', '[Оперативная память Samsung]', '[Оперативная память Corsair]', '[Мат Плата ASRock]', '[Мат Плата Asus]', '[Мат Плата Gigabyte]', '[кулер CoolerMaster]', '[кулер DEEPCOOL]', '[Блок питания Corsair]', '[Блок питания Chieftec]', '[Блок питания FSP]', '[Видеокарта ASUS]', '[Видеокарта MSI]', '[Видеокарта Gigabyte]', '[Корпус ATX]', '[Корпус DNS]', '[Корпус Zalman]', '[Мониторы BenQ]', '[Мониторы Samsung]', '[Мышь A4tech]', '[Клавиатура Genius]' ); sQuery : String = 'Select [Название], [Цена], [Количество] FROM %s where [Название] like "%s"'#13#10; sQueryCPU : String = 'Select [Название], [Цена], [Количество] FROM %s where [Название] Like "%s" or [Сокет] like "%s"'#13#10; sUnion : String = 'union all'#13#10; var I : Integer; begin Str := '%' + Str + '%'; Result := Format(sQueryCPU,[TblCPU[1],str,str]) + sUnion + Format(sQueryCPU,[TblCPU[2],str,str]) + sUnion; For I := Low(Tbl) To High(Tbl) Do Begin Result := Result + Format(sQuery,[Tbl[i],str]); If I < High(Tbl) Then Result := Result + sUnion; End; end; end. |
#5
|
||||
|
||||
А собственно в какой компонент ты выводишь этот текст? Приведенный тобой код никакого отношения к проблеме не имеет.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
Цитата:
Код:
procedure TForm1.btnFindClick(Sender: TObject); begin If Trim(Edit1.Text) = '' Then Exit; DBGrid1.Visible:=true; BitBtn2.Visible := True; ADOQuery1.Active := False; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text := GetSearchQuery(Edit1.Text); ADOQuery1.Active:=true; dbgrid1.Columns[0].Width:=800; dbgrid1.Columns[1].Width:=60; dbgrid1.Columns[2].Width:=75; end; |
#7
|
||||
|
||||
И опять-же.
Код:
ADOQuery1.SQL.Text := GetSearchQuery(Edit1.Text); ПС: Ага понял. В DBGrid ты пытаешься отобразить результаты, а вместо текста ответа видишь <memo> А тип полей какой у тебя для столбцов задан? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 12.06.2015 в 15:45. |
#8
|
||||
|
||||
Тяжело в деревне без нагана.
Ладно пойдем другим путем. В запросе который вы формируете: Код:
Select [Название], [Цена], [Количество] FROM ... Если это так, то вставьте в свойство AdoQuery1.SQL текст запроса: Код:
Select [Название], [Цена], [Количество] FROM Table1 Цель этой операции получить список полей для AdoQuery1. Их можно увидеть вызвав свойства для иконки AdoQuery1 в разделе Fields editor... Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
|||
|
|||
Цитата:
|
#10
|
||||
|
||||
Да и бог с ним с именем таблицы. Главное, что имена полей одинаковы и следовательно событие OnGetText для полей тоже будет одинаково, независимо от источника.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |