Как сделать подобное

JeSert
Дата: 15.05.2005 20:29:29
у меня база в Access там есть 3 Queries с которых выгрибаю все в 4 Query
проблем не было когда количество Query было неизменяемым, но вот потребовалось создавать их динамически и после этого выгрибать все в 4 Query.
Можно ли добавлять Query в базу програмно?
кузя
Дата: 15.05.2005 21:56:08
попробуй так:
OleDbConnection	cn=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\db5.mdb;");
cn.Open();
OleDbCommand	cm;

// создание процедуры			
cm=new OleDbCommand("CREATE PROCEDURE Proc1 AS SELECT * FROM [TBL1]", cn);
cm.ExecuteNonQuery();

// получить список всех процедур (блин, почему View ???)
DataTable pr=cn.GetOleDbSchemaTable(OleDbSchemaGuid.Views, new object[]{null, null, null});
for(int i=0; i<pr.Rows.Count; i++)
  Console.WriteLine(pr.Rows[i]["TABLE_NAME"]);

// удаление процедуры
cm=new OleDbCommand("DROP PROCEDURE Proc1", cn);
cm.ExecuteNonQuery();
JeSert
Дата: 15.05.2005 23:29:13
А можно хранить все процедуры не в базе, а в DataTable хранить а потом Relaitions накидать вот сами процедуры
qАдминПредметы
SELECT [Предметы по специальностям].*FROM [Предметы по специальностям]WHERE profession_id=3;
qДизайнПредметы
SELECT [Предметы по специальностям].*FROM [Предметы по специальностям]WHERE profession_id=2;
qПрогПредметы
SELECT [Предметы по специальностям].*FROM [Предметы по специальностям]WHERE profession_id=1;
и 4 в которое все сливаю
SELECT Предметы.id, Предметы.subject_name_rus, qПрогПредметы.type,qПрогПредметы.hours, qДизайнПредметы.type, qДизайнПредметы.hours, qАдминПредметы.type, qАдминПредметы.hours
FROM (qПрогПредметы RIGHT JOIN (qДизайнПредметы RIGHT JOIN Предметы ON qДизайнПредметы.subject_id=Предметы.id) ON qПрогПредметы.subject_id=Предметы.id) LEFT JOIN qАдминПредметы ON qАдминПредметы.subject_id=Предметы.id
ORDER BY subject_name_rus;
Может слишком накрутил есть ли проще способ?
кузя
Дата: 16.05.2005 11:03:00
JeSert
А можно хранить все процедуры не в базе, а в DataTable хранить а потом Relaitions накидать
Не совсем понятна мысль. поясни...
такое ощущение, что ты говоришь не о процерурах, а о результатах выполнения этих процедур ?
JeSert
Дата: 16.05.2005 20:25:46
Ну может не правильно выразился, объясню по другому.
говорю я о результатах выполнение этих процедур. Самые простые я смогу загрузить в DataTable
SELECT [Предметы по специальностям].*FROM [Предметы по специальностям]WHERE profession_id=3;
но можно ли потом заполнить DataTable таким образом установив Relations между другими DataTable?
SELECT Предметы.id, Предметы.subject_name_rus, qПрогПредметы.type,qПрогПредметы.hours, qДизайнПредметы.type, qДизайнПредметы.hours, qАдминПредметы.type, qАдминПредметы.hours
FROM (qПрогПредметы RIGHT JOIN (qДизайнПредметы RIGHT JOIN Предметы ON qДизайнПредметы.subject_id=Предметы.id) ON qПрогПредметы.subject_id=Предметы.id) LEFT JOIN qАдминПредметы ON qАдминПредметы.subject_id=Предметы.id
ORDER BY subject_name_rus;
только
а именно не хранить процедуры в базе а делать все обыкновенными запросами
кузя
Дата: 16.05.2005 20:36:50
обыкновенные запросы в DataSet можно выполнять только для одной таблицы (например, DataTable.Select(..); )

в твоем случае (несколько таблиц) можно воспользоваться
HOW TO: Implement a DataSet JOIN helper class in Visual C# .NET
JeSert
Дата: 16.05.2005 23:35:21
Спасибо почитаем