вопрос по отображению в DataGrid

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Grimm
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 24.10.2005 (Пн) 0:17

вопрос по отображению в DataGrid

Сообщение Grimm » 11.06.2006 (Вс) 19:20

Есть бд из трех таблиц

1. таблица валют
2. таблица ед. измерения
3. таблица товаров

В таблице 3 есть индексы, которые соответствуют записям в 1 и 2 таблицах.
Выводим в datagrid таблицу 3. Видим индексы.

Как выводить в datagrid вместо индексов строковые данные из соответствующих таблиц.
Я слишком рано стал ребенком

vit.b
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 10.06.2006 (Сб) 16:29

Сообщение vit.b » 11.06.2006 (Вс) 21:58

Я проделал это с DataGridView:
Берем свойства DataGridView->Columns.(Collection).
Далее выбираем нужный column и выставляем свойства:
-ColumnType=DataGridViewComboBoxColumn;
-DataSourse=НужныйBindingSource;
-DispleyMember=<то поле каторое вы хотите увидеть по ссылке>;
-ValueMember=<ключ в ссылочной таблице>.
Если подойдет то плиз
<Visual basic 2005>
--------------------------------------------------------------------------------
Me.DataGridViewTextBoxColumn4.DataPropertyName = "CategoryID"
Me.DataGridViewTextBoxColumn4.DataSource = Me.CategoriesBindingSource
Me.DataGridViewTextBoxColumn4.DisplayMember = "CategoryName"
Me.DataGridViewTextBoxColumn4.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.[Nothing]
Me.DataGridViewTextBoxColumn4.HeaderText = "CategoryID"
Me.DataGridViewTextBoxColumn4.Name = "DataGridViewTextBoxColumn4"
Me.DataGridViewTextBoxColumn4.Resizable = System.Windows.Forms.DataGridViewTriState.[True]
Me.DataGridViewTextBoxColumn4.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic
Me.DataGridViewTextBoxColumn4.ValueMember = "CategoryID"
------------------------------------------------------------------------------------

vit.b
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 10.06.2006 (Сб) 16:29

Сообщение vit.b » 11.06.2006 (Вс) 22:25

А может так попробывать?

SELECT Products.ProductID, Products.ProductName, Products.QuantityPerUnit, Products.UnitPrice, Products.UnitsInStock, Products.UnitsOnOrder,
Products.ReorderLevel, Products.Discontinued, Categories.CategoryName, Suppliers.CompanyName, Products.SupplierID, Products.CategoryID
FROM Products INNER JOIN
Categories ON Products.CategoryID = Categories.CategoryID INNER JOIN
Suppliers ON Products.SupplierID = Suppliers.SupplierID

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 12.06.2006 (Пн) 13:13

vit.b, используй теги форматирования. Согласить, так намного удобнее читать:
Код: Выделить всё
SELECT Products.ProductID, Products.ProductName, Products.QuantityPerUnit, Products.UnitPrice, Products.UnitsInStock, Products.UnitsOnOrder, Products.ReorderLevel, Products.Discontinued, Categories.CategoryName, Suppliers.CompanyName, Products.SupplierID, Products.CategoryID
FROM Products
INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID
INNER JOIN Suppliers ON Products.SupplierID = Suppliers.SupplierID


P.S. А если в запросе еще псевдонимы использовать, то будет намного короче.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Grimm
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 24.10.2005 (Пн) 0:17

Сообщение Grimm » 12.06.2006 (Пн) 20:04

cmd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data.mdb;Persist Security Info=False"

Set CN = New ADODB.Connection
CN.ConnectionString = cmd
CN.Open

Set RS = New ADODB.Recordset
RS.CursorLocation = adUseClient

sql = "SELECT Products.ProdName, Products.UnitIndex, Products.ProdPrice, Products.ProdNum, Products.CurIndex, Units.UnitName, Curr.CurName
FROM Products
INNER JOIN Units ON Products.UnitIndex = Units.UnitIndex
INNER JOIN Curr ON Products.CurIndex = Curr.CurIndex"

RS.Open sql, CN, adOpenDynamic, adLockBatchOptimistic - пишет ошибку
Set DataGrid1.DataSource = RS

------------------------------------------------------
пишет следующее:
Ошибка синтаксиса (пропущен оператор) в выражении запроса
'Products.UnitIndex = Units.UnitIndex INNER JOIN Curr ON Products.CurIndex = Curr.CurIndex'
Я слишком рано стал ребенком

vit.b
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 10.06.2006 (Сб) 16:29

Сообщение vit.b » 12.06.2006 (Пн) 20:05

Бесспорно!!!!
Я так просто прикидовал.......

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 12.06.2006 (Пн) 20:16

Grimm, попробуй со скобками:
Код: Выделить всё
SELECT Products.ProdName, Products.UnitIndex, Products.ProdPrice, Products.ProdNum, Products.CurIndex, Units.UnitName, Curr.CurName
FROM Products
(INNER JOIN Units ON Products.UnitIndex = Units.UnitIndex)
INNER JOIN Curr ON Products.CurIndex = Curr.CurIndex
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

vit.b
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 10.06.2006 (Сб) 16:29

Сообщение vit.b » 12.06.2006 (Пн) 20:22

VVitafresh! Так надо?

SELECT Products.ProductName, Suppliers.CompanyName, Categories.CategoryName
FROM Products
INNER JOIN Suppliers ON Products.SupplierID = Suppliers.SupplierID INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID

Grimm у меня вот так работает....

Grimm
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 24.10.2005 (Пн) 0:17

Сообщение Grimm » 12.06.2006 (Пн) 20:24

Со скобками - ошибка синтаксиса в предложении FROM

С одним INNER работает, синтаксис зараза, буду рыться в справочниках.

Всем сенкс огромный, но от помощи не отказываюсь - проблема еще есть. Надо два INNER
Я слишком рано стал ребенком

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 12.06.2006 (Пн) 20:27

А, ну да -- скобку не там поставил. Так должно работать:
Код: Выделить всё
SELECT Products.ProdName, Products.UnitIndex, Products.ProdPrice, Products.ProdNum, Products.CurIndex, Units.UnitName, Curr.CurName
FROM (Products INNER JOIN Units ON Products.UnitIndex = Units.UnitIndex)
INNER JOIN Curr ON Products.CurIndex = Curr.CurIndex
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Grimm
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 24.10.2005 (Пн) 0:17

Сообщение Grimm » 12.06.2006 (Пн) 20:31

VVitafresh
респект еще раз спасибо, а где нить почитать про синтаксис реально, или это уже вопрос не в тему
Я слишком рано стал ребенком

vit.b
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 10.06.2006 (Сб) 16:29

Сообщение vit.b » 12.06.2006 (Пн) 20:38

А что именно нужна база *.mdb?
Могу посоветовать SQLite....
Неплохая штука.
А у кого 2005-> SQLite.NET 2.0 и с "CompactFramework" работает и x64.

Grimm
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 24.10.2005 (Пн) 0:17

Сообщение Grimm » 12.06.2006 (Пн) 22:34

пока интересует mdb, однако синтаксис стандартного SQL, насколько я понимаю, един
Я слишком рано стал ребенком

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 13.06.2006 (Вт) 11:03

у акцесса свой синтаксис, пока ты галочку на совместимость с SQL ANSI 92 не поставишь :wink:

Grimm
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 24.10.2005 (Пн) 0:17

Сообщение Grimm » 15.06.2006 (Чт) 11:15

VVitafresh

а как расставить скобки, если INNER JOIN 4 раза а не 2
Я слишком рано стал ребенком

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.06.2006 (Чт) 11:17

открой дизайнер запросов в акцессе , соедини нужные тебе таблицы , он тебе текст запроса сам как нужно сделает


Вернуться в Базы данных

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

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

    TopList