Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос из двух mdb таблиц с условием / 14 сообщений из 14, страница 1 из 1
18.07.2014, 12:51
    #38700254
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
Доброго дня всем.

Прошу не пинать сильно, по сколько не разу
не использовал запросы к акцесовским таблицам.
Задача состоит в том, что перебирая данные в первой
таблицы(Registr), найти совпадение трех полей во второй таблицы(Stationar) с первой (rec.Fields(6) rec.Fields(7) rec.Fields(8) )
Пока делаю так с первой таблицы(Registr):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Private Sub txtName_KeyDown(KeyCode As Integer, Shift As Integer)
Dim n As Integer
Dim ret As String, patch As String
Dim conn As New ADODB.Connection
Dim rec As New ADODB.Recordset
On Error GoTo Error
If KeyCode = 13 Then
ret = DTPicker1.Year
patch = ReadIniValue(App.Path & "\sal.ini", "Default", "txtPatch")
esql = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & patch '"D:\baza1\onco.mdb"
VSFlexGrid1.Rows = 1
n = 0
conn.Open (esql), , , 0

esql1 = "SELECT * FROM Registr WHERE god=" & ret & " AND num like '" & txtName.Text & "%'"
rec.Open (esql1), conn, , adOpenStatic, adLockReadOnly
While Not rec.EOF
n = n + 1
'**************
 VSFlexGrid1.AddItem vbTab & n & vbTab & rec.Fields(5) & vbTab & _
                     rec.Fields(6) & " " & rec.Fields(7) & " " & rec.Fields(8) & vbTab & _
                     rec.Fields(13) & vbTab & _
                     rec.Fields(15) & vbTab & _
                     rec.Fields(17) & vbTab & _
                     rec.Fields(19) & vbTab & _
                     rec.Fields(23) & vbTab & _
                     rec.Fields(28) & vbTab & _
                     rec.Fields(30) & vbTab & _
                     rec.Fields(32)
 rec.MoveNext
 Wend

rec.Close
conn.Close
Set rec = Nothing
Set conn = Nothing
MousePointer = vbDefault
End If
Exit Sub
Error:
MsgBox ("Error: " & Err.Description)
End Sub



Спасибо.
...
Рейтинг: 0 / 0
18.07.2014, 12:57
    #38700264
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
ValeriuЗадача состоит в том, что перебирая данные в первой
таблицы(Registr), найти совпадение трех полей во второй таблицы

Для этого используется операция JOIN в sql-запросе
...
Рейтинг: 0 / 0
18.07.2014, 15:24
    #38700471
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
Shocker.Pro,
Примерчика бы...
...
Рейтинг: 0 / 0
18.07.2014, 15:35
    #38700489
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
Опишите задачу в виде названия таблиц и полей (а не fields(5))
...
Рейтинг: 0 / 0
18.07.2014, 15:47
    #38700504
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
Shocker.Pro,

Допустим имеем таблицу Registr с полями:
god, familia, imea, otcestvo

Имеем вторую таблицу Stationar с полями:
god, familia, imea, otcestvo, cod

Сделать запрос для первой таблицы и при совпадения god, familia, imea, otcestvo
вывести со второй таблицы поле cod

Спасибо.
...
Рейтинг: 0 / 0
18.07.2014, 15:55
    #38700516
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
Код: sql
1.
2.
3.
4.
SELECT Stationar.cod
FROM Registr
INNER JOIN Stationar ON Registr.god=Stationar.god AND Registr.familia=Stationar.familia AND Registr.imea=Stationar.imea AND Registr.otcestvo=Stationar.otcestvo
WHERE ...



Хотя тут явно наблюдается ошибка в проектировании базы данных. Данные пациента должны храниться один раз в справочнике пациентов, а в таблицах должна храниться только ссылка на справочник. Представьте, что будет, если, к примеру, в отчестве будет опечатка или пробел лишний.
...
Рейтинг: 0 / 0
18.07.2014, 15:57
    #38700520
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
ValeriuСделать запрос для первой таблицыможет быть я неправильно понял, если нужны ВСЕ данные из первой таблицы и только cod из второй (при совпадении), тогда так:
Код: sql
1.
2.
3.
4.
SELECT Registr.Нужноеполе1, Registr.Нужноеполе2, Stationar.cod
FROM Registr
LEFT JOIN Stationar ON Registr.god=Stationar.god AND Registr.familia=Stationar.familia AND Registr.imea=Stationar.imea AND Registr.otcestvo=Stationar.otcestvo
WHERE ...
...
Рейтинг: 0 / 0
21.07.2014, 10:29
    #38701601
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
Shocker.Pro,
Делаю запрос, но почему то выскакивает ошибка:
"Отсутствует значение для одного или нескольких требуемых параметров"
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub Command1_Click()
Dim ret As String, patch As String
Dim conn As New ADODB.Connection
Dim rec1 As New ADODB.Recordset

On Error GoTo Error
ret = DTPicker1.Year
patch = ReadIniValue(App.Path & "\sal.ini", "Default", "txtPatch")
esql = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & patch

conn.Open (esql), , , 0
esql1 = "SELECT Registr.god, Registr.nume, Registr.prenume, Registr.patronim, Stationar.cod " & _
"FROM Registr LEFT JOIN Stationar ON Registr.god=Stationar.god AND " & _
"Registr.nume=Stationar.nume AND Registr.prenume=Stationar.prenume AND Registr.patronim=Stationar.patronim " & _
"WHERE Registr.god=" & ret & " AND Registr.num like '" & txtName.Text & "%'"

rec1.Open (esql1), conn, , adOpenStatic, adLockReadOnly
While Not rec1.EOF
...

Буду признателен за подсказку.
Спасибо.
...
Рейтинг: 0 / 0
21.07.2014, 10:47
    #38701626
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
Ошиблись в названии поля таблицы
...
Рейтинг: 0 / 0
21.07.2014, 12:43
    #38701823
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
Shocker.Pro,
Да, невнимательность - .nume
Вроде все внимательно посмотрел еще раз, но все ровно такую же ошибку выдает...
...
Рейтинг: 0 / 0
21.07.2014, 13:16
    #38701876
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
Значит не все нашел.
...
Рейтинг: 0 / 0
22.07.2014, 07:59
    #38702482
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
ValeriuShocker.Pro,
Да, невнимательность - .nume
Вроде все внимательно посмотрел еще раз, но все ровно такую же ошибку выдает...
смотрите внимательнее

авторДопустим имеем таблицу Registr с полями:
god, familia, imea, otcestvo

Имеем вторую таблицу Stationar с полями:
god, familia, imea, otcestvo, cod

Код: sql
1.
"WHERE Registr.god=" & ret & " AND Registr.num like '" & txtName.Text & "%'"


где в таблице Registr поле num ? далее мне лень смотреть, а Вам полезно

ЗЫЖ
Скажу так, если сообщение звучит как
автор"Отсутствует значение для одного или нескольких требуемых параметров"

значит смотрите в названии полей
Если бы ошибка была в параметрах, то акцесс предложил бы их ввести
...
Рейтинг: 0 / 0
22.07.2014, 10:07
    #38702562
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
HandKot,
Да, это моя ошибка.
Человек, который создал таблицы
разные названия назначил(num и nume). Исправил.
...
Рейтинг: 0 / 0
22.07.2014, 10:35
    #38702587
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из двух mdb таблиц с условием
По рукам его бить за такие названия таблиц и полей!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос из двух mdb таблиц с условием / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]