Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Проблема с базами данных в VS 2008  (Прочитано 37116 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« : 18-03-2009 15:19 » 

А давайте изучать Visual Studio2008 а то на у меня одной очень плохо получается.

Недавно начала изучать. Проблема с базами данных. Не могу сделать отчет в Crystal Reports. В результате показывает пустой отчет, с базой соедениятся и названия колонок в отчете показывает. Может кто-нибудь объяcнит доходчиво, возможно вопрос глупый.
« Последнее редактирование: 18-03-2009 16:42 от Джон » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 18-03-2009 18:16 » 

У меня такой метод отладки:
1. Делаю Refresh (с вводом нужных параметров, если предусмотрено отчетом).
2. Захожу в меню Database -> Show SQL Query. Далее уже исследую проблему непосредственно с SQL-запросом.

Вообще, разработка отчета должна как раз начинаться с SQL-запроса, а только потом переноситься в отчет.

Хм... VS2008... Не знаю, какие там меню и что там есть. Я работаю с CR 8.5 и 10 - они были отдельными продуктами. Надеюсь, что редактор отчетов остался в том же виде.
« Последнее редактирование: 18-03-2009 18:17 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #2 : 19-03-2009 07:18 » 

Спасибочки, буду пробовать. В VS 2008 теперь встроенно все. Дело в том что я не могу просто вывести базу, которую подключила перед этим, и создала в SQL, такое ощущение, что она ее подключает данные в DataGridView показывает, а в отчет не пускает.
Записан
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #3 : 19-03-2009 09:40 » 

если интересно, то это вот так сделали в VisualStudio C#  (только до конца понять не могу что как все это функционирует)
private void Form1_Load(object sender, EventArgs e)
        {

            DataSet2 _DataSet2 = new DataSet2();
            DataSet2TableAdapters.PersonalDatenTableAdapter pdt = new test_bericht.DataSet2TableAdapters.PersonalDatenTableAdapter();
            pdt.Fill(_DataSet2.PersonalDaten);
            this.CrystalReport11.SetDataSource(_DataSet2.PersonalDaten as DataTable);

            //this.reportViewer1.RefreshReport();
        }
Записан
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #4 : 19-03-2009 09:42 » 

DataSet2-ето источник данных, где лежит сама база данных Personal
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 19-03-2009 09:54 » 

Свет, любой контрол типа грид (таблицы) можно проинициаллизировать объектом "таблица", тогда он сам настраивает свой "внешний вид" - число столбцов, тип данных и тд. Это осуществляется через свойство DataSource, либо напрямую, либо через ф-ю.

В твоём случае это таблица PersonalDaten. А объект PersonalDatenTableAdapter заполненяет эту таблицу данными:
pdt.Fill(_DataSet2.PersonalDaten);
« Последнее редактирование: 19-03-2009 10:43 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #6 : 19-03-2009 10:22 » 

Понятно, принцып поняла, тяжелова-то программировать. Буду тренироваться, возьму побольше таблиц, должно работать.
Спасибо.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #7 : 19-03-2009 10:54 » 

А попоробуй так:

Код:
            DataTable dt = new DataTable();
            DataSet2TableAdapters.PersonalDatenTableAdapter pdt = new test_bericht.DataSet2TableAdapters.PersonalDatenTableAdapter();
            pdt.Fill(dt);
            this.CrystalReport11.SetDataSource(dt);

По идее ты используешь только таблицу. Должно сработать, если конечно PersonalDatenTableAdapter не делает нчего специального со специальной таблицей объекта DataSet2. Просто приведение типа _DataSet2.PersonalDaten as DataTable наталкивает на мысль, что это стандартная DataTable. Зато если это сработает, понять происходящее будет проще.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #8 : 19-03-2009 11:00 » 

нет она ни чего не делает, я беру данные и выдаю их в отчет, пока не могу попробавать, сейчас добавила еще таблиц, хочу сделать запрос по нескольким базам и вывести результат в отчетик, но попробую обязательно.
Записан
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #9 : 19-03-2009 12:42 » 

Джон, так не получается, вот на это ругается pdt.Fill(dt);
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 19-03-2009 13:05 » new

там опечатка , надо

pdt->Fill(dt);

это же уже указатель

Записан

svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #11 : 19-03-2009 13:10 » 

Ой, теперь я наделала таблиц PersonalDaten(к ней вспомогательные Ort, Strasse) и Bezalung(вспомогательные к ней PersonalDaten, Waren) , а как их все в отчет поместить, нужно сделать запрос,а он не дает себя сохранить, или опять не то делаю , и етот запрос поместить в отчет. Жаль
Записан
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #12 : 19-03-2009 13:14 » 

Алексей и на ето ругается pdt->Fill(dt); вот так работает:
DataSet2 _DataSet2 = new DataSet2();
            DataSet2TableAdapters.PersonalDatenTableAdapter pdt = new test_bericht.DataSet2TableAdapters.PersonalDatenTableAdapter();
            pdt.Fill(_DataSet2.PersonalDaten);
            this.CrystalReport11.SetDataSource(_DataSet2.PersonalDaten as DataTable);
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #13 : 19-03-2009 14:34 » 

Джон, так не получается, вот на это ругается pdt.Fill(dt);

Ну понятно, значит метод ждёт специальный тип данных, наследованный от DataTable. Ну как там у вас говорится: es war ein Versuch wert. Ага

Лёш, в С# ТОЛЬКО указатели. Ага Опечатки нет, всё правильно. Не путай человека.

Свет, я с Crystal Reports не работал, посмотри можно ли ему присваивать несколько таблиц в качестве DataSource. Хотя если честно, то я не совсем понимаю что у тебя есть и что ты хочешь получить? Ну куча таблиц это понятно, а что в отчёте должно стоять? Не просто же содержимое этих таблиц? Что за таинственный запрос? Не забывай, что обычно результат запроса - есть тоже таблица. Может тебе надо эту результирующую таблицу передать Crystal Reports? Кроче распиши сначала логику того, что ты хочешь получить.

Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #14 : 19-03-2009 15:00 » 

Вот я и хочу передать эту результируюшую таблицу передать в отчет.
Я в принципе тренируюсь, вот и немецкий маненько потренируем Ага. Значит в отчет идет:
номер счет-фактуры, в которой стоит наименование товара, его цена и оплачено или не оплачено. Для этого создала таблицы PersonalDaten(к ней вспомогательные, тоесть справочники Ort, Strasse) и Bezalung(вспомогательные к ней PersonalDaten, Waren) Делаю Abfrage там все эти таблички связаваю, а потом надо этот запрос как-то записать в табличку, а как Жаль я не знаю.
Ну вот придумала я себе такую задачку.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #15 : 19-03-2009 15:11 » 

Покажи как ты это самое Abfrage делаешь? SQL?

ps Хотя всё-таки лучше давать переменным аглицкие имена. Немецкий многие знают, но представь себе, что именно тот человек, который сможет тебе помочь как раз и не поймёт.
« Последнее редактирование: 19-03-2009 15:12 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #16 : 19-03-2009 15:19 » 

я делаю abfrage в dateset, там связываю таблицы, это наверное не правельно, надо в программке это как-то делать,
постараюсь перевести на англ.язык названия Ага
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #17 : 19-03-2009 16:42 » 

Так покажи код, как ты это делаешь?

зы Ну раз мы учимся... попутно datA - это данные, а datE - это дата.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 19-03-2009 18:53 » 

Джон, отчету можно задать только один источник данных. Если отчет содержит подотчеты, то им можно назначить другие источники. Во всяком случае, в версиях 8.5 и 10 принцип такой (в VS включена версия "XI" - 11).

Offtopic:
MS скупает хорошие продукты. Если бы они еще баги исправили бы...
« Последнее редактирование: 19-03-2009 18:55 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #19 : 19-03-2009 20:48 » 

Значит нужно создать новую базу(так сказать временную) и туда записывать нужные данные на время выполнения запроса и показа отчета?
Джон спасибо за замечания, да запрос делала в DataSet.(сознаю свою вину, степень, тяжесть, глубину Улыбаюсь )
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #20 : 19-03-2009 21:14 » 

Свет, посмотри что из себя представляет класс DataTable. Тебе нужен один экземпляр такого типа. Потом тебе его надо будет "наполнить" данными... как результат твоего запроса - Abfrage (англ. Request). После этого ты передашь эту таблицу в качестве DataSource CrystalReport.

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

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #21 : 20-03-2009 08:04 » 

Всем привет!!! Да-да Помогаюшим и советуюшим терпения! Быть такого не может Мне понимания! Здесь была моя ладья...
Здесь структура и связь по Базам, как их скопировать по другому не знаю, могу написать примерную структуру.

* DataSet2.xsd (58.98 Кб - загружено 830 раз.)
Записан
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #22 : 20-03-2009 09:15 » 

каждую базу надо декларировать, например справочник городов (Ort)который находится в источнике данных DataSet2, для программы Test-Bericht, и все остальные тоже также, наверное, что-то проверить не могу, опять она на меня матерится.
DataSet2TableAdapters.OrtTableAdapter ota = new test_bericht.DataSet2TableAdapters.OrtTableAdapter();
ota.Fill(_DataSet2.Ort);
this.CrystalReport11.SetDataSource(_DataSet2.Ort as DataTable);
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #23 : 20-03-2009 10:59 » 

Свет, как-то обучение у тебя не совсем правильно происходит. Жаль Смотри, есть база данных - набор таблиц, каждая из которых представляет собой набор столбцов именуемых так же полями, и строчек - непосредственно данные.
Таким образом начинать стоит именно с простейшей БД. Например с двумя таблицами - 1. Имя День рождения 2. Номер телефона. Тренировочный запрос - "показать имя и номер телефона знакомых у кого сегодня ДР".
Ручками сделать соединение с БД с помощью объекта SqlConnection, сформулировать запрос на SQL, получить данные  и тд.

А так ты делаешь, точнее Студия делает для тебя, так называемый враппер (англ. wrapper) - обёртку твоей БД, которая, не спорю, упрощает работу с БД, но не может использоваться для образовательных целей. Ибо всё проходит мимо и в итоге остаётся только непонимание. В лучшем случае - понимание как обращаться с враппером. Именно с этим. Именно для этой БД. Но это не даёт тебе знаний. По сути враппер делает тоже самое, что я написал выше. И если ты один раз сделаешь это ручками, поймёшь как вся эта кухня работает, то потом будешь пользоваться врапперами как помощниками, или даже скорее всего обходиться без них, делая свои собственные - удовлетворяющие твоим задачам и условиям.

На правах ИМХО разумеется.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #24 : 20-03-2009 11:06 » 

Да, это я к чему. ИМХО ты пытаешься подойти с неправильной строны, поэтому у тебя и возникают проблемы с каждым новым случаем. Ты не видишь саму БД, не чувствуешь её. Ты пытаешься методом научного тыка выжать чего-то из враппера. Получилось - ура! Я молодец! Нет - паника, ничего не работает и тд. А надо чтобы ты уверенно пользовалась своими знаниями. И ессно, что для их получения придётся немного потрудиться.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #25 : 20-03-2009 11:51 » 

ага, начнем учиться тогда, попробуем от простого к сложному, а не наоборот
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #26 : 20-03-2009 12:18 » 

Совершенно верно! А мы поможем.

Вопрос Nr.0 - у тебя MSDN есть?

1. Какая у тебя БД? MS SQL 200x?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #27 : 20-03-2009 12:27 » 

MSDN есть, только я там с трудом понимаю что нужно конкренто делать,  SQL 2008
Записан
svetik
Постоялец

de
Offline Offline
Пол: Женский
Mысли материализуются!


« Ответ #28 : 20-03-2009 12:54 » 

БД - *.mdf с набором таблиц
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #29 : 20-03-2009 13:08 » 

svetastar, не путай СУБД и файловую систему
доступ к таблицам предоставляется средствами СУБД
СУБД хранит свои данные, не только таблицы, в "файловой системе"
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines