powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / TableAdapter & Parameter Array
16 сообщений из 16, страница 1 из 1
TableAdapter & Parameter Array
    #38428803
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый господа,

Есть 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}

Я не уверен можно ли так

Буду благодарен за любые подсказки, помощь.
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38428820
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел вот эту статью http://www.sql.ru/articles/mssql/03060701arraysandlistsinsqlserver.shtml

думаю разберусь, но все равно хотелось бы услышать мнения как бы кто поступил в данной ситуации.
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38428851
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень понравилась эта Статья: http://www.sql.ru/docs/sql/u_sql/ch13.shtml
написанна простым языком
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38429024
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как итог этого вечера

SELECT *
FROM DT
WHERE DTID IN (SELECT DTID
FROM Invoice
WHERE (InvoiceDate BETWEEN @Date1 AND @Date2))

Почитал по первой ссылке что это не самый лучший способ. Медленный.
В работу запущу пока этот.
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38429110
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G,

В статьях про left join ничего не говорилось?
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38429125
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT *
FROM   DT
WHERE  EXISTS (
         SELECT 1
         FROM   Invoices
         WHERE  DTID = DT.DTID
         AND    InvoiceDate BETWEEN @Date1 AND @Date2)
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38430014
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый,

промучался весь день и гугл не помог.

дело в том что когда вставляю дату в конструкторе адаптера то все ОК

когда делаю в адаптере ПРОСМОТР ДАННЫХ то выскакивает такая ошибка

conversion failed when converting date and or time from character string

если заменяю @Date1 на '01/01/2013' то все ок.


Пытался в запросе конвертировать в datetime и varchar но не помогло.

что делать ума не приложу.. HELP MEEEE!!!
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38430045
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GДень добрый,

промучался весь день и гугл не помог.

дело в том что когда вставляю дату в конструкторе адаптера то все ОК

когда делаю в адаптере ПРОСМОТР ДАННЫХ то выскакивает такая ошибка

conversion failed when converting date and or time from character string

если заменяю @Date1 на '01/01/2013' то все ок.


Пытался в запросе конвертировать в datetime и varchar но не помогло.

что делать ума не приложу.. HELP MEEEE!!!Кусок кода с ПРОСМОТР ДАННЫХ покажи
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38430203
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 и выбрать в нем "Просмотреть данные..." то тоже заполнение не происходит а выскакиевает таже ошибка.
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38430206
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри в коде не точность

SELECT *
FROM DT
WHERE EXISTS (
SELECT DTID
FROM Invoices
WHERE DTID = DT.DTID
AND InvoiceDate BETWEEN @Date1 AND @Date2)
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38430256
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G,

... соберите вашу дату в виде ГодМесяцДень (без разделителей), прежде чем передавать в параметр .. напр, 20131016 ... Тогда SQL однозначно поймет ее в BETWEEN ....
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38430267
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
делал
делал так 20130101 делал так 2013-01-01 делал так 01-01-2013 .... и еще массу вариантов перепробывал.
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38430276
igr_ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Артем 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.
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38430301
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри что всем вынес мозг :)

Решение как всегда оказалось на поверхности...

1 когда я оставлял Null то писалось varchar(3) - про себя говорил хм но не знал что делать :) . было подозрительно

2 когда я на форме делал заполнение TableAdaptera то там писалось в всплывающей подсказке что Date1 as String


и тут я задался вопросом как изменить на DateTime

Просто передовать DateTime не помогало :)


РЕШЕНИЕ

выбрать запрос и в свойствах сбоку зайти в Parameter и выставить там DbType = Date, a Size поменять с 3х на 10ть.


Всем спасибо за участие. Вопрос закрыт. Уф... вчера 4 часа и сегодня в течении дня несколько часов...
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38430320
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GПередавайте в качестве параметра значение DateTime, а не строку и будет вам счастье.+1
авторно все равно хотелось бы услышать мнения как бы кто поступил в данной ситуацииЗависит от. Какую СУБД Вы используете и как, одно дело, если бд это просто набор таблиц для хранения данных и вся логика работы с данными вне бд (на клиенте или среднем звене), и совсем другое, если часть этой логики реализовано в бд (в виде хранимых процедур, например). Объемы данных и нагруженность системы в данной ситуации.
Ну и предпочтения разработчика, на последнем месте:) В "данной ситуации" я бы наверное написал хранимку, которая бы возвращала два результата, счета и декларации (в хп сначала отобрал бы по критерию ИД счетов+деклараций во временную таблицу, затем на основании этих ИД выдал бы два результата).
...
Рейтинг: 0 / 0
TableAdapter & Parameter Array
    #38430610
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот беда, когда
Me.DTTableAdapter.FillByClosedItems (
скобочку открываете, что там просит какой тип?
Екорный бабай студия за Вас половину работы делает, она подсказывает, смотрите внимательно.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / TableAdapter & Parameter Array
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]