2016-01-15 1 views
-2

Я заполняю DataTable по запросу, этот запрос принимает все имя таблицы, доступное в моей базе данных. Теперь то, что я хочу сделать, это заказать это имя таблицы к определенному индексу, например, это таблица возвращается:Как установить определенный порядок DataTable?

appointments 
planning 
resources 
service_categories 
services 
services_providers 
settings 
user_settings 
users 

, что я пытаюсь сделать, это установить этот порядок:

appointments 
planning 
resources 
service_categories 
services 
settings 
users 
user_settings 
services_providers 

запрос

query = "SELECT TABLE_NAME 
         FROM INFORMATION_SCHEMA.TABLES 
         WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='"& My.Settings.Dbname & "' " 

Я хочу порядок в данном конкретном формате пункт о «причине DataTable в следующий раз, когда я перебором этого объективистский t, и я хочу иметь порядок итерации точности имени таблицы. Как я могу это достичь?

+1

Пожалуйста, покажите запрос вы using..is, что порядок, основанный на чем-либо в частности? – Plutonix

+0

Это неуказанный набор. Чтобы сортировать, вы должны иметь некоторую ценность для сортировки. Какой столбец в таблице определяет ваш заказ, закажите этот столбец. – David

+0

Если я вспоминаю из прошлых вопросов, вы проверяете схему, чтобы получить имена таблиц. Если вы хотите, чтобы они были в определенном порядке, создайте новую таблицу, такую ​​как '{tblName, SortOrder}', которая даст вам контроль над порядком. – Plutonix

ответ

1

Вы можете попробовать это, это своего рода грязный способ, но он работает на моем конце. Там в другой способ, как хорошо, что были уже наверху ...

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA = "DBNAME" 
ORDER BY 
    CASE TABLE_NAME 
    WHEN 'appointments' THEN 1 
    WHEN 'planning' THEN 2 
    WHEN 'resources' THEN 3 
    WHEN 'service_categories' THEN 4 
    WHEN 'services' THEN 5 
    WHEN 'settings' THEN 6 
    WHEN 'users' THEN 7 
    WHEN 'user_settings' THEN 8 
    WHEN 'services_providers' THEN 9 
END 

Вот строковое представление этого

"SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA = '" & My.Settings.Dbname & "' 
ORDER BY 
    CASE TABLE_NAME 
    WHEN 'appointments' THEN 1 
    WHEN 'planning' THEN 2 
    WHEN 'resources' THEN 3 
    WHEN 'service_categories' THEN 4 
    WHEN 'services' THEN 5 
    WHEN 'settings' THEN 6 
    WHEN 'users' THEN 7 
    WHEN 'user_settings' THEN 8 
    WHEN 'services_providers' THEN 9 
END " 
+0

Но этот код идет в строку? –

+0

Да, если у вас нет хранимой процедуры? – Codexer

+0

Я имею в виду, я должен также добавить «then 1» после имени таблиц? –