powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос из двух mdb таблиц с условием
14 сообщений из 14, страница 1 из 1
Запрос из двух mdb таблиц с условием
    #38700254
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня всем.

Прошу не пинать сильно, по сколько не разу
не использовал запросы к акцесовским таблицам.
Задача состоит в том, что перебирая данные в первой
таблицы(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
Запрос из двух mdb таблиц с условием
    #38700264
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuЗадача состоит в том, что перебирая данные в первой
таблицы(Registr), найти совпадение трех полей во второй таблицы

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

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

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

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

Спасибо.
...
Рейтинг: 0 / 0
Запрос из двух mdb таблиц с условием
    #38700516
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Запрос из двух mdb таблиц с условием
    #38700520
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Запрос из двух mdb таблиц с условием
    #38701601
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Запрос из двух mdb таблиц с условием
    #38701626
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошиблись в названии поля таблицы
...
Рейтинг: 0 / 0
Запрос из двух mdb таблиц с условием
    #38701823
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Да, невнимательность - .nume
Вроде все внимательно посмотрел еще раз, но все ровно такую же ошибку выдает...
...
Рейтинг: 0 / 0
Запрос из двух mdb таблиц с условием
    #38701876
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит не все нашел.
...
Рейтинг: 0 / 0
Запрос из двух mdb таблиц с условием
    #38702482
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Запрос из двух mdb таблиц с условием
    #38702562
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKot,
Да, это моя ошибка.
Человек, который создал таблицы
разные названия назначил(num и nume). Исправил.
...
Рейтинг: 0 / 0
Запрос из двух mdb таблиц с условием
    #38702587
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По рукам его бить за такие названия таблиц и полей!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос из двух mdb таблиц с условием
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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