access & sql въпрос
2 отговора
136 прегледа
access & sql въпрос
Привет,
от ВБ чета, пиша и т.н в аксес база данни. Въпроса не е много за тоя клуб, но поради липса на по-подходящ все пак питам:
Как да претърся за нещо (стринг) всички полета в дадена таблица, без да ги изреждам едно по едно в заявката за търсене?
10х
от ВБ чета, пиша и т.н в аксес база данни. Въпроса не е много за тоя клуб, но поради липса на по-подходящ все пак питам:
Как да претърся за нещо (стринг) всички полета в дадена таблица, без да ги изреждам едно по едно в заявката за търсене?
10х
Re: access & sql въпрос
Ок, но си пропуснал да кажеш какъв изходен резултат искаш да се получи. Ще опитам да ти напиша нещо като логика за търсене по полетата, и ако намери някъде нещо - да извежда в листбокс името на полето в което е намерено. Аналогично ти можеш да си го направиш да ползва дадени данни от реда. Всъщност примера ти го пиша с DAO, но в общи линии е същото (предполагам). Ако не е - ще се намери кой да подскаже още малко... ;о)
Идеята е такава, че полетата в таблица са с индекс. Т.е. ти можеш да се "обръщаш" към дадено поле в реда по неговия номер, а не по име... Оттук следва, че можеш да пуснеш цикъл от 0 до dbKas.Fields.Count - 1, и да проверяваш по критерии в полето дали има такава данна, каквато ти трябва. Респективно, можеш да направиш и поленца по някаква форма, които също да са индексирани, и да служат като потребителски филтър за търсене в базата. И така:
Получения резултат е - в лист-бокса се получава списък на полетата, в които се съдържа стринга "122". Можеш да промениш малко нещата, че да търси не по част от стринга, а да сравнява целия стринг, но това са само козметични промени, които са с различен синтаксис, и не касаят въпроса за достъп до базата.
Пробвай. Или сподели още нещо за програмата, за да ни насочиш какво точно искаш да постигнеш.
Щирлиц
Идеята е такава, че полетата в таблица са с индекс. Т.е. ти можеш да се "обръщаш" към дадено поле в реда по неговия номер, а не по име... Оттук следва, че можеш да пуснеш цикъл от 0 до dbKas.Fields.Count - 1, и да проверяваш по критерии в полето дали има такава данна, каквато ти трябва. Респективно, можеш да направиш и поленца по някаква форма, които също да са индексирани, и да служат като потребителски филтър за търсене в базата. И така:
Private Sub Form_Load()
Dim dbWS As DAO.Workspace
Dim dbDB As DAO.Database
Dim dbTB As DAO.Recordset
Set dbES = DAO.Workspaces(0)
Set dbDB = DAO.OpenDatabase("c:\osp\Service.mdb")
Set dbTB = dbDB.OpenRecordset("Aparati", dbOpenDynaset)
strSearch = "122"
For intCount = 0 To dbTB.Fields.Count - 1
If InStr(dbTB.Fields(intCount), strSearch) <> 0 Then
List1.AddItem dbTB.Fields(intCount).Name
End If
Next intCount
End Sub
Получения резултат е - в лист-бокса се получава списък на полетата, в които се съдържа стринга "122". Можеш да промениш малко нещата, че да търси не по част от стринга, а да сравнява целия стринг, но това са само козметични промени, които са с различен синтаксис, и не касаят въпроса за достъп до базата.
Пробвай. Или сподели още нещо за програмата, за да ни насочиш какво точно искаш да постигнеш.
Щирлиц
Re: access & sql въпрос
благодаря ти, сега ще го пробвам.
Опитах с нещо подобно но не се получаваше.
10х
Опитах с нещо подобно но не се получаваше.
10х