Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: помогите с хранимой процедурой!!пожалуйста! Добавлено: 01.11.06 18:15  

Автор вопроса:  angelnl
Я никогда не писала хранимые процедуры, а теперь появилась необходимость. а я даже не знаю как.
Вобщем смысл такой.
В поле listbox На форме выбирается номер сотрудника. И надо проверить что если в таблице есть такая запись, что стоит же номер сотрудника, а другое поле completed еще не заполнено, то вывести сообщение. Как это сделать? Помогите пожалуйста!!

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 02.11.06 01:42
1. А при чем тут хранимые процедуры? Это можно проверить обычным SQL-запросом..
2. С SQL-запросом тоже вряд ли кто поможет не зная структуры таблиц, индексов и ключей. Увы, ясновидящих я тут еще не встречал..
3. Вопрос сформулирован крайне сумбурно, недостаточно входной информации..

Ответить

Номер ответа: 2
Автор ответа:
 angelnl



Вопросов: 17
Ответов: 33
 Профиль | | #2 Добавлено: 02.11.06 02:00
Есть таблица Remount(id,sotr_id,...,completed)
id=primary key
в Listbox выбираем sotr_id.
Так вот, если completed для этого сотрудника =0, значит он еще занят и нам нужно выбрать другого сотрудника.
А как это сделать sql запросом?

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 02.11.06 02:19
Если ID заранее известно, то выглядеть это будет примерно так:
SELECT REMOUNT.Completed From REMOUNT WHERE REMOUNT.ID=5 AND REMOUNT.SOTR_ID=3
Разумеется, числа 3,5 взяты от балды, и вместо них тебе необходимо полставлять реальные значения и SQL запрос этот ты будешь формировать динамически в каком то из событий.. Далее, когда
Completed тебе уже известно, решаешь,что делать с этим сотрудником дальше..

Ответить

Номер ответа: 4
Автор ответа:
 angelnl



Вопросов: 17
Ответов: 33
 Профиль | | #4 Добавлено: 02.11.06 03:01
Да, спасибо. пробовала сейчас, ругается.
remount.id здесь должно быть не важно. Я пробовала так
"select sotr_id
from remount
where completed=0 and sotr_id=@sotr_id"
сам запрос возвращает значения, а потом уже в коде написала, что
if query1<>0 then msgbox("";)
И уже во время выподнения он начал ругаться

Ответить

Номер ответа: 5
Автор ответа:
 angelnl



Вопросов: 17
Ответов: 33
 Профиль | | #5 Добавлено: 02.11.06 03:09
пишет
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

Ответить

Номер ответа: 6
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #6
Добавлено: 02.11.06 18:05
проблема не на этом этапе - у тебя select - причём здесь constraint'ы?
смотри в дебаге, где ошибается и там разбирайся.

Ответить

Номер ответа: 7
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 02.11.06 19:03
И откуда у тебя нарисовался query1???
Если это реальный запрос, то как ты можешь его сравнивать с нулем? Или он у тебя возвращает скалярную величину?

Ответить

Номер ответа: 8
Автор ответа:
 angelnl



Вопросов: 17
Ответов: 33
 Профиль | | #8 Добавлено: 02.11.06 20:05
он возвращает несколько sotr_order, т.е. не 0.

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 02.11.06 21:27
он возвращает несколько sotr_order

Если я тебя правильно понял, то query1 возвращает набор записей, и соответственно не является скалярной величиной, и значит ты НЕ МОЖЕШЬ писать такое выражение query1<>0.. query1 не является числом...

Ответить

Номер ответа: 10
Автор ответа:
 angelnl



Вопросов: 17
Ответов: 33
 Профиль | | #10 Добавлено: 03.11.06 19:37
да, наверное вы правы, точнее вы конечно же правы.. Как объясните, что в своем приложении я постоянно использую
if
adapter.fillby(dataset.таблица)=0 then
msgbox("Нет записей";)
endif
 и это работает).

Ответить

Номер ответа: 11
Автор ответа:
 angelnl



Вопросов: 17
Ответов: 33
 Профиль | | #11 Добавлено: 03.11.06 19:38
и как в таком случае мне проверять "занятость" сотудника..? запросм не получилось, с хр. процедурами проблемы..((

Ответить

Номер ответа: 12
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #12 Добавлено: 03.11.06 23:44
Вы знаете, я был крайне удивлен тем, что Ваш пример работает... Потому как это есть грубейшее нарушение, и никогда не следует так писать!
И вообще я бы очень рекомендовал самой первой строкой вставить инструкцию Option Strict On, что избавит Вас от многих ошибок при неявном приведении к типу ( что и является причиной работоспособности Вашего примера)

Теперь по существу вашего вопроса..
Если вам достаточно просто проверить количество возвращенных строк, то вы можете сделать следующее..

If dataset.таблица.Rows.Count = 0 Then MessageBox.Show("Нет записей";)

Ответить

Номер ответа: 13
Автор ответа:
 angelnl



Вопросов: 17
Ответов: 33
 Профиль | | #13 Добавлено: 04.11.06 17:46
спасибо! странно, что работало. Только вот немного другое я хотела получить по поводу "нет записей". Мне же нужно чтобы не просто был подсчет строк в таблице, а подсчет строк в таблице, отвечающих определнному условию. Т.е. как бы сюда вставить запрос еще??

Ответить

Номер ответа: 14
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #14 Добавлено: 04.11.06 19:37
Мне же нужно чтобы не просто был подсчет строк в таблице, а подсчет строк в таблице, отвечающих определнному условию.


Солнц, ну вот смотри.. твой запрос (query1) возвращает набор записей, так? Причем возвращает он тебе только те записи, которые удовлетворяют твоему условию, значит у тебя на руках есть объект, в котором представлены эти самые записи. Это либо DataSet либо DataTable , либо еще что-то (я просто не знаю структуру твоей БД и деталей реализации запроса).В каком виде query1 возвращает тебе записи? Он же должен КУДА-ТО возвращать записи.. не в пустое место же...

Ответить

Номер ответа: 15
Автор ответа:
 angelnl



Вопросов: 17
Ответов: 33
 Профиль | | #15 Добавлено: 04.11.06 20:04
Да, в том-то и дело, что пока никуда. Возвращает, я имела в виду. что он может возвращать, т.е. когда я в QueryBuilder нажимаю ExecuteQuery, то он возвращает несколько значений по условию. Мне же не нужен в форме такой элемент, где это все будет храниться, мне просто хочется, чтобы осуществлялась проверка.Т.е. мне надо как-то может организовать что-то чтобы по очереди все эти значения проверялись..??

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам