Поиск в БД!!!

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

PetrOFFs
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 24.06.2006 (Сб) 15:50
Откуда: Омск

Поиск в БД!!!

Сообщение PetrOFFs » 03.07.2006 (Пн) 16:52

:?: Я сделал БД, но я не знаю как правильно создать поиск по этой БД. Если кто знает или кто то когда то делал подобное пожалуйста напишите как это сделать!!!!!! :?:

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.07.2006 (Пн) 17:05

select * from x where y=z :roll:

PetrOFFs
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 24.06.2006 (Сб) 15:50
Откуда: Омск

Сообщение PetrOFFs » 03.07.2006 (Пн) 18:53

Ramzes
Я сделал телефонный справочник и хочу сделать по нему поиск, что бы искать номера телефонов, Ф.И.О. абонентов. И мне не понятно что ты мне написал :shock:

temur
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.02.2005 (Чт) 21:17
Откуда: Georgia

Сообщение temur » 03.07.2006 (Пн) 19:44

С запросами знаком? тогда
select * from x where y=z

* - Все
x - Имя таблицы
y - Столбец с телефонными номерами в базе
z - Искомое значение (Номер телефона)
Это называется запрос с параметрами

PetrOFFs
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 24.06.2006 (Сб) 15:50
Откуда: Омск

Сообщение PetrOFFs » 04.07.2006 (Вт) 5:45

:shock:
Последний раз редактировалось PetrOFFs 04.07.2006 (Вт) 19:03, всего редактировалось 1 раз.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 04.07.2006 (Вт) 6:02

да ради бога:

Код: Выделить всё

DB = New ADODB.Connection
RS = New ADODB.Recordset

DB.CursorLocation = ADODB.CursorLocationEnum.adUseClient
DB.Open("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath & "\Обучение.mdb;Mode=Share Deny None;")

RS.Open("select * from Инструктора where фио = '" & cboIFIO.Text & "' and Уволен <> 1", DB, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)


открывает БД и ищет в базе товарища с ФИО, которого юзер выбрал в комбобоксе
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 04.07.2006 (Вт) 10:30

PetrOFFs
Скажи, а калькулятор ты уже написал...или лучше скажи кто.

Ты же не думаешь, что за тебя действительно все будут писать?

temur
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.02.2005 (Чт) 21:17
Откуда: Georgia

Сообщение temur » 04.07.2006 (Вт) 10:58

Вот тебе и пример на ВС 2005 с базой Access
Вложения
TelefoneBook.rar
(32.4 Кб) Скачиваний: 70
Последний раз редактировалось temur 05.07.2006 (Ср) 9:39, всего редактировалось 2 раз(а).

dmitriy22
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 121
Зарегистрирован: 27.04.2006 (Чт) 12:04
Откуда: Москва

Сообщение dmitriy22 » 04.07.2006 (Вт) 12:41

temur

а как загрузить этот файл в 2003 ???..... или никак???
Я не волшебник, я просто учусь.

temur
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.02.2005 (Чт) 21:17
Откуда: Georgia

Сообщение temur » 04.07.2006 (Вт) 12:49

Никак поскольку в FW 1.1 нет компонента TableAdapter
и DataSet немного другой.

dmitriy22
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 121
Зарегистрирован: 27.04.2006 (Чт) 12:04
Откуда: Москва

Сообщение dmitriy22 » 04.07.2006 (Вт) 13:15

temur писал(а):Никак поскольку в FW 1.1 нет компонента TableAdapter
и DataSet немного другой.


да и я тоже понимаю что нет, но может ......как-нить, а то здесь многие файлы я смотрю сделаны на 2005 Visual... а так охота посмореть поэксперементировать....себе на заметку взять....т.к. наглядно оно быстрее доходит!!! :cry:
Я не волшебник, я просто учусь.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 04.07.2006 (Вт) 13:30

dmitriy22 писал(а):
temur писал(а):Никак поскольку в FW 1.1 нет компонента TableAdapter
и DataSet немного другой.


да и я тоже понимаю что нет, но может ......как-нить, а то здесь многие файлы я смотрю сделаны на 2005 Visual... а так охота посмореть поэксперементировать....себе на заметку взять....т.к. наглядно оно быстрее доходит!!! :cry:


открывай код в блокноте и учись :D
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

PUNK-GRUNGER
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 10.06.2004 (Чт) 14:22
Откуда: Украина, Николаев

Сообщение PUNK-GRUNGER » 04.07.2006 (Вт) 14:23

ему поиск нужен.. а не выборка..
SELECT * FROM [table] WHERE [pole] LIKE '[pattern]';
А тема подключения и работы с БД тут обжевивалась сто мильйонов раз, юзай поиск по форуму - SqlClient, DataReader и т.д.
«Каждому программисту ЭВМ выдает то, что он заслуживает» (c)

temur
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.02.2005 (Чт) 21:17
Откуда: Georgia

Сообщение temur » 04.07.2006 (Вт) 14:56

PUNK-GRUNGER
Ты пример смотрел?
Там так и сделано.
И к сведению
SELECT * FROM [table] WHERE [pole] LIKE '[pattern]'
и
SELECT * FROM [table] WHERE [pole] = '[pattern]'
Даст один и тотже результат.
А вот так другое дело
SELECT * FROM [table] WHERE [pole] LIKE '%' + [pattern] + '%'

PetrOFFs
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 24.06.2006 (Сб) 15:50
Откуда: Омск

Сообщение PetrOFFs » 04.07.2006 (Вт) 19:43

Я хочу сделать такой поиск чтобы в текстовое поле ввести Имя или номер тел. и что бы он показывал эту строку в таблице.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 04.07.2006 (Вт) 19:48

PetrOFFs писал(а):Я хочу сделать такой поиск чтобы в текстовое поле ввести Имя или номер тел. и что бы он показывал эту строку в таблице.


гыыыыыыыыыыы
это же элементарно
нужно искать по первым введенным символам
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

PetrOFFs
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 24.06.2006 (Сб) 15:50
Откуда: Омск

Сообщение PetrOFFs » 05.07.2006 (Ср) 6:18

lord0n
Ну а как это сделать?

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 05.07.2006 (Ср) 7:36

PetrOFFs писал(а):lord0n
Ну а как это сделать?


здесь тебе дадут идею, а как делать думай сам
там все просто - я за 10 мин наваял.
через лефт по количеству введенных символов перебираешь датавъю или листбокс (в общем че захочешь)
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

PetrOFFs
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 24.06.2006 (Сб) 15:50
Откуда: Омск

Сообщение PetrOFFs » 05.07.2006 (Ср) 9:01

lord0n
DB = New ADODB.Connection
RS = New ADODB.Recordset

DB.CursorLocation = ADODB.CursorLocationEnum.adUseClient
DB.Open("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath & "\Обучение.mdb;Mode=Share Deny None;")

RS.Open("select * from Инструктора where фио = '" & cboIFIO.Text & "' and Уволен <> 1", DB, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)


Это ты мне написал и уменя были ошибки.

Мне не понятно для чего эта строка

& My.Application.Info.DirectoryPath & "\Обучение.mdb;Mode=Share Deny None;")


Вот здесь у меня ошибка
My.

Name 'My' is not declared.

И если тебе не трудно, то объясни для чего кждая строка твоего кода :oops:


Вот мой код:
Код: Выделить всё
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        Dim DB As New ADODB.Connection
        Dim RS As New ADODB.Recordset
        DB.CursorLocation = ADODB.CursorLocationEnum.adUseClient
        DB.Open("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath & "\Обучение.mdb;Mode=Share Deny None;")

        RS.Open("select * from Номера where Сотовый телефон = '" & ComboBox1.Text & "' and Уволен <> 1", DB, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
    End Sub

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 05.07.2006 (Ср) 9:06

My.Application.Info.DirectoryPath - путь к исполняемуму файлу твоей проги (можешь заменить на прямой путь к базе, например c:\base\db.mdb)
"\Обучение.mdb" - название базы
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 05.07.2006 (Ср) 9:07

как й тя называется файл акцеса и какие колонки в базе?
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

temur
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.02.2005 (Чт) 21:17
Откуда: Georgia

Сообщение temur » 13.07.2006 (Чт) 15:45

Ты используеш ВС2003 а там нет My
Напиши так
& Application.StartupPath & "\Обучение.mdb;Mode=Share Deny None;
Используй в Селекте параметры подобно этому
SELECT * FROM [table] WHERE [pole] LIKE '%' + [pattern] + '%'
и будет тебе счастье.
Или вот тебе код на Базе из предыдущего примера.

Код: Выделить всё
Dim DT As DataTable
   
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As     System.EventArgs) Handles Button1.Click
        Dim SQLstr As String = "SELECT * FROM Numbers WHERE ([    Name] LIKE '%' + " & Me.TextBox1.Text & " + '%')"
        Dim Con As New System.Data.SqlClient.SqlConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""" & Application.StartupPath & "\Base.mdb" & """")
        Dim DA As New System.Data.SqlClient.SqlDataAdapter(SQLstr, Con)

        DT = New DataTable
        DA.Fill(DT)
        Me.DataGridView1.DataSource = DT
End Sub


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

    TopList