На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Опять MS Acess + C#
    Народ! Помогите доделать прогу!
    На форме есть DataGridView (или DataGrid, неважно), и база ms access( в аттаче), с которой надо работать только из этой проги работать(вставка, удаление, измение, выборка). В голове у меня такая каша, что не могу ниче сообразить.
    ХЕЛП!

    PS Или ссылочку хоть подкиньте...
    Прикреплённый файлПрикреплённый файлnewInternetShop.rar (16.93 Кбайт, скачиваний: 206)
      Разнопоточный доступ к GUI - там кроме разнопоточности показана работа с Access
        Посмотри в книге Э.Троелсена. Там есть. А в чем проблема?
          Цитата СаняСаняСаня @
          Посмотри в книге Э.Троелсена. Там есть. А в чем проблема?

          Не видел я там этого. Как полное название книги и страница?

          Цитата PIL @
          Разнопоточный доступ к GUI - там кроме разнопоточности показана работа с Access

          Это лишь малая часть, что мне итак понятно.
            GRIENDERS Добрый вечер!

            А в чем собственно проблема? В том как написать запросы или в чем то другом?
              Эндрю Троелсен. C# и платформа .NET. Стр 673.
                Цитата СаняСаняСаня @
                Эндрю Троелсен. C# и платформа .NET. Стр 673.

                Скачал ее в архиве, а там пароль... Видно не судьба. Как нибудь, если найду, почитаю.

                Цитата RDAlex @
                А в чем собственно проблема? В том как написать запросы или в чем то другом?

                Я кое что начиркал, создал бд, в ней одну простенькую таблицу. Короче все вроде нормально, но как сделать так, чтобы при добавлении записи ключевое поле само заполнялось как в самом Access'e. Ведь можно добавлять можно хоть и уникальными записями, но идущими не по порядку или вообще отрицательные.

                Не могу понять логику работы операторов вставки, удаления и тд. Например
                ExpandedWrap disabled
                  string sql_update = "UPDATE TestTable1 SET field1_for_table1=?, field2_for_table1=?, field3_for_table1=? WHERE id_for_table1=?";

                Это что, в таблице обязательно должно быть ключевое поле ?
                А если просто в ней 3 поля и все текстовые и нет ключевого, тогда как ?
                  Цитата GRIENDERS @
                  Это что, в таблице обязательно должно быть ключевое поле ?
                  А если просто в ней 3 поля и все текстовые и нет ключевого, тогда как ?
                  - первичный ключ должен присутствовать в таблице однозначно, пусть это будет одно поле или несколько полей. Работая с отсоединенными данными при отсутствии первичного ключа нет возможности идентифицировать строку которую ты хочешь изменить-удалить. С такими же полями может оказаться несколько записей.
                  Почитай что-то о базах данных.
                    Цитата GRIENDERS @
                    Короче все вроде нормально, но как сделать так, чтобы при добавлении записи ключевое поле само заполнялось как в самом Access'e.
                    ИМХО автоинкрементные поля - зло. Не пользуюсь ими. Значения для ключа генерю сам из запроса чтонить типа
                    ExpandedWrap disabled
                      public int dbGetNextId(string tablename, string id_name)
                              {
                       
                                  string sql="select max(" + id_name + ") from " + tablename;
                                  try
                                  {
                                      object o=com.ExecuteScalar(sql);
                                      if (o is int)
                                      {
                                          return (Math.Max((int)o + 1, 1));
                                      }
                                  }
                                  catch{}
                                  return -1;
                              }
                      arbuzov, не учи плохому :)
                      между 2-мя запросами на выборку max и вставкой данных, в многопользовательском режиме может быть уже вставлено несколько записей, и при вставке записей ты получишь исключение о ограничении целостности. Так можно делать - если ты единственный клиент базы, и то - некрасиво.
                        Цитата PIL @
                        arbuzov, не учи плохому :)
                        между 2-мя запросами на выборку max и вставкой данных, в многопользовательском режиме может быть уже вставлено несколько записей, и при вставке записей ты получишь исключение о ограничении целостности. Так можно делать - если ты единственный клиент базы, и то - некрасиво.

                        Но ведь можно сделать блокировку, чтобы никто не имел доступа на запись в таблицу в это время. Это займёт не так много времени...
                          Цитата PIL @
                          первичный ключ должен присутствовать в таблице однозначно

                          А вот взляните-ка на базу в аттаче, в которой во всех таблицах (кроме первой) просто нельзя сделать поля ключевыми из-за повторяющихся значений записей. Как быть?

                          К этой же базе данных:
                          А как сделать так, чтобы между таблицами в моей проге установить "связи" ("схема данных"- в Access'e) ?
                          Причем в таблице ТОВАРЫ поле ЖАНРЫ заполняется с помощью раскрывающегося списка (подстановкой) из таблицы ЖАНРЫ. Тоже самое должно быть в моей проге.
                          arbuzov, спсибо, учту это.
                            Цитата PIL @
                            первичный ключ должен присутствовать в таблице однозначно

                            А вот взляните-ка на базу в аттаче, в которой во всех таблицах (кроме первой) просто нельзя сделать поля ключевыми из-за повторяющихся значений записей. Как быть?

                            К этой же базе данных:
                            А как сделать так, чтобы между таблицами в моей проге установить "связи" ("схема данных"- в Access'e) ?
                            Причем в таблице ТОВАРЫ поле ЖАНРЫ заполняется с помощью раскрывающегося списка (подстановкой) из таблицы ЖАНРЫ. Тоже самое должно быть в моей проге.
                            arbuzov, спасибо, учту это.

                            Кстати, я одним глазком видел, как делаются аналогичные проги в c++ builder - там там все это намного проще, даже писать ниче не пришлось, хотя технология доступа там ADO.
                            Где все преимущества ADO.NET?
                            Странно как-то получается!
                            Прикреплённый файлПрикреплённый файл________________.rar (17.42 Кбайт, скачиваний: 217)
                              Цитата GRIENDERS @
                              А вот взляните-ка на базу в аттаче, в которой во всех таблицах (кроме первой) просто нельзя сделать поля ключевыми из-за повторяющихся значений записей. Как быть?

                              - составной первичный ключ на несколько полей, или ввести еще одно поле которое будет первичным ключем, и сделать его счетчиком


                              Цитата GRIENDERS @
                              Причем в таблице ТОВАРЫ поле ЖАНРЫ заполняется с помощью раскрывающегося списка (подстановкой) из таблицы ЖАНРЫ. Тоже самое должно быть в моей проге.

                              - по моему грид умеет отображать дочерние записи
                                Вопрос практически решен - RDAlex помог.

                                Но еще вопросик
                                Цитата PIL @
                                по моему грид умеет отображать дочерние записи

                                Может быть, но сначало надо же установить связи между таблицами. Как?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0644 ]   [ 17 queries used ]   [ Generated: 26.04.24, 10:37 GMT ]