|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
День добрый господа, Есть 2 таблицы: 1я Декларации (родитель) 2я Счета (потомок). У одной Декларации может быть несколько счетов. Таблица 2. Счета имеет колонки InvoiceID DTID InvoiceNumber InvoiceDate Из 2ой таблицы вытягиваются Счета по дате счета: SELECT * FROM Inoices Where InvoiceDate BETWEEN @Date1 AND @Date2 Нужно подтянуть данные из 1ой таблицы у которой есть колонка DTID. Только те DTID которые вытянулись из 2ой таблицы Как правильно реализовать запрос? Как я понимаю нужно примерно так: SELECT * FROM DT Where DTID @ArrayDTIDfromTableInvoices Dim ArrayDTIDfromTableInvoices () as String = {1,2,3, etc} Я не уверен можно ли так Буду благодарен за любые подсказки, помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 21:03 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
нашел вот эту статью http://www.sql.ru/articles/mssql/03060701arraysandlistsinsqlserver.shtml думаю разберусь, но все равно хотелось бы услышать мнения как бы кто поступил в данной ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 21:31 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
Очень понравилась эта Статья: http://www.sql.ru/docs/sql/u_sql/ch13.shtml написанна простым языком ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 22:06 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
Как итог этого вечера SELECT * FROM DT WHERE DTID IN (SELECT DTID FROM Invoice WHERE (InvoiceDate BETWEEN @Date1 AND @Date2)) Почитал по первой ссылке что это не самый лучший способ. Медленный. В работу запущу пока этот. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 01:06 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
Артем G, В статьях про left join ничего не говорилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 08:23 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 08:45 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
День добрый, промучался весь день и гугл не помог. дело в том что когда вставляю дату в конструкторе адаптера то все ОК когда делаю в адаптере ПРОСМОТР ДАННЫХ то выскакивает такая ошибка conversion failed when converting date and or time from character string если заменяю @Date1 на '01/01/2013' то все ок. Пытался в запросе конвертировать в datetime и varchar но не помогло. что делать ума не приложу.. HELP MEEEE!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 16:56 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
Артем GДень добрый, промучался весь день и гугл не помог. дело в том что когда вставляю дату в конструкторе адаптера то все ОК когда делаю в адаптере ПРОСМОТР ДАННЫХ то выскакивает такая ошибка conversion failed when converting date and or time from character string если заменяю @Date1 на '01/01/2013' то все ок. Пытался в запросе конвертировать в datetime и varchar но не помогло. что делать ума не приложу.. HELP MEEEE!!!Кусок кода с ПРОСМОТР ДАННЫХ покажи ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 17:11 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
fortibransa, КОд написан выше SELECT * FROM DT WHERE EXISTS ( SELECT 1 FROM Invoices WHERE DTID = DT.DTID AND InvoiceDate BETWEEN @Date1 AND @Date2) Сорри что плохо объяснил Код срабатывает в 2х случаях 1ый когда дату явно указываешь вот так '01/01/2013' 2ой когда в ДатаСет выбираешь Запрос FillBy... и жмешь настроить и в построителе запросов нажимаю Выполнить запрос вбиваю даты и все ОК Когда происходит заполнение ТаблАдаптера код не срабатывает Dim Date1 As String = "01/01/2013" ' Me.DateTimePicker1.Value.ToShortDateString Dim Date2 As String = "01/01/2014" ' Me.DateTimePicker2.Value.ToShortDateString Me.DTTableAdapter.FillByClosedItems(Me.DS2.DT, Date1, Date2) Менял на Dim Date1 As Date, делал конвертацию в запросе. Ни чего не помогло. Выскакивает conversion failed when converting date and or time from character string Не обязательно запускать приложение Даже если просто выбрать TableAdapter и выбрать в нем "Просмотреть данные..." то тоже заполнение не происходит а выскакиевает таже ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 18:22 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
Сорри в коде не точность SELECT * FROM DT WHERE EXISTS ( SELECT DTID FROM Invoices WHERE DTID = DT.DTID AND InvoiceDate BETWEEN @Date1 AND @Date2) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 18:23 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
Артем G, ... соберите вашу дату в виде ГодМесяцДень (без разделителей), прежде чем передавать в параметр .. напр, 20131016 ... Тогда SQL однозначно поймет ее в BETWEEN .... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 18:59 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
делал делал так 20130101 делал так 2013-01-01 делал так 01-01-2013 .... и еще массу вариантов перепробывал. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 19:08 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
Артем Gfortibransa, КОд написан выше SELECT * FROM DT WHERE EXISTS ( SELECT 1 FROM Invoices WHERE DTID = DT.DTID AND InvoiceDate BETWEEN @Date1 AND @Date2) Сорри что плохо объяснил Код срабатывает в 2х случаях 1ый когда дату явно указываешь вот так '01/01/2013' 2ой когда в ДатаСет выбираешь Запрос FillBy... и жмешь настроить и в построителе запросов нажимаю Выполнить запрос вбиваю даты и все ОК Когда происходит заполнение ТаблАдаптера код не срабатывает Dim Date1 As String = "01/01/2013" ' Me.DateTimePicker1.Value.ToShortDateString Dim Date2 As String = "01/01/2014" ' Me.DateTimePicker2.Value.ToShortDateString Me.DTTableAdapter.FillByClosedItems(Me.DS2.DT, Date1, Date2) Менял на Dim Date1 As Date, делал конвертацию в запросе. Ни чего не помогло. Выскакивает conversion failed when converting date and or time from character string Не обязательно запускать приложение Даже если просто выбрать TableAdapter и выбрать в нем "Просмотреть данные..." то тоже заполнение не происходит а выскакиевает таже ошибка.Передавайте в качестве параметра значение DateTime, а не строку и будет вам счастье. Если нужно отбросить время, то преобразуйте ваше значение, но опять таки в DateTime. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 19:16 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
Сорри что всем вынес мозг :) Решение как всегда оказалось на поверхности... 1 когда я оставлял Null то писалось varchar(3) - про себя говорил хм но не знал что делать :) . было подозрительно 2 когда я на форме делал заполнение TableAdaptera то там писалось в всплывающей подсказке что Date1 as String и тут я задался вопросом как изменить на DateTime Просто передовать DateTime не помогало :) РЕШЕНИЕ выбрать запрос и в свойствах сбоку зайти в Parameter и выставить там DbType = Date, a Size поменять с 3х на 10ть. Всем спасибо за участие. Вопрос закрыт. Уф... вчера 4 часа и сегодня в течении дня несколько часов... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 19:45 |
|
TableAdapter & Parameter Array
|
|||
---|---|---|---|
#18+
Артем GПередавайте в качестве параметра значение DateTime, а не строку и будет вам счастье.+1 авторно все равно хотелось бы услышать мнения как бы кто поступил в данной ситуацииЗависит от. Какую СУБД Вы используете и как, одно дело, если бд это просто набор таблиц для хранения данных и вся логика работы с данными вне бд (на клиенте или среднем звене), и совсем другое, если часть этой логики реализовано в бд (в виде хранимых процедур, например). Объемы данных и нагруженность системы в данной ситуации. Ну и предпочтения разработчика, на последнем месте:) В "данной ситуации" я бы наверное написал хранимку, которая бы возвращала два результата, счета и декларации (в хп сначала отобрал бы по критерию ИД счетов+деклараций во временную таблицу, затем на основании этих ИД выдал бы два результата). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2013, 20:02 |
|
|
start [/forum/topic.php?fid=20&msg=38429024&tid=1403857]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
322ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 446ms |
0 / 0 |