Модераторы: gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не срабатывает Update в datagridview 
V
    Опции темы
shark1
Дата 20.1.2008, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



вернее он срабатывает все нормально вижу добавленную строку в datagridview или наоборот после удаления какого нибудь item вижу изменения в datagridview,но при этом бандинг замирает на первой строке и все ! и ни хочет сдвигатся,все забандинные текст боксы показывают значения первого itemа,и не важно если я с помощью поиска хочу найти какойтоitem он его находит но бандинг остаётся на первом в datagridview.Подскажите в чем дело.Зарание спасибо.

Update:
Код

private void btn_Update_Click(object sender, EventArgs e)
        {
            try
            {
                
                this.oleDbConnection = new OleDbConnection();

                oleDbConnection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Data\\Users_DB.mdb";
                OleDbDataAdapter adapter1 = new OleDbDataAdapter("Select * from Users", oleDbConnection);

                OleDbCommandBuilder ocb = new OleDbCommandBuilder(adapter1);

                ds = new DataSet();
                adapter1.Fill(ds, "Users");
                dataTable = ds.Tables["Users"];
                adapter1.Update(ds, "Users");
                ds.AcceptChanges();
                dataGridView1.DataSource = ds.Tables["Users"].DefaultView;                             
                                
                MessageBox.Show("Record update Successfully \n \n Update !!!", " Warning !!! Warning !!! Warning !!!", MessageBoxButtons.OK, MessageBoxIcon.Warning);  //inform the user
                

            }

            catch (System.Data.OleDb.OleDbException exp)
            {

                MessageBox.Show(exp.ToString());
            }
            finally
            {
                //close the connection
                this.oleDbConnection.Close();

            }

                dataGridView1.Update();
            }
      
        }

PM MAIL   Вверх
informatik
Дата 20.1.2008, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 1
Всего: 6



Update датагрида здесь вообще ни к чему..

И вообще весь синтаксис непраивльный!!!!

Я так понимая по нажатию кнопки Update ты хочешь передать изменения в БД??

Но ты посмотри что у тебя написано:

 Ты сначала по по запросу берешь нужную таблицу, потом тут же пытаешься обновить..., но на самом деле то ты эту таблицу только что создал... и никаких изменений в ней нет!!!


--------------------
namespace informatik
PM MAIL   Вверх
shark1
Дата 21.1.2008, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



Да извеняюсь код дествительно "G",убрал все лишнее,но все равно бандинг замирает на строке на кот. стоит курсор в тот момент когда я нажимаю btn_Update.И все во всех текст боксах остаются значения старые и они не обновляются :( Подскажите плиззз,как подправить.Спасибо.
Код

OleDbDataAdapter adapter1 = new OleDbDataAdapter("Select * from Users", oleDbConnection);
            ds = new DataSet();
            dataTable = ds.Tables["Users"];

            adapter1.Fill(ds, "Users");
            
            adapter1.Update(ds, "Users");
            ds.AcceptChanges();              
             dataGridView1.Update();
             dataGridView1.DataSource = ds.Tables["Users"].DefaultView;
         

PM MAIL   Вверх
informatik
Дата 21.1.2008, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 1
Всего: 6



shark1 ты меня похоже непонял... твой Update вообще неправильный. Загрузка двнных из БД и обновление - две совершенно разные вещи и должны выполняться отдельно.

DataAdapter создается как глобальная переменная:
Код

OleDbDataAdapter adapter1;


Далее нужно загрузить данные в отдельной процедуре, напрмер при загрузке приложения:
Код


private void Form_Load()
{
            adapter1 = new OleDbDataAdapter("Select * from Users", oleDbConnection);
            ds = new DataSet(); //Если таблица только одна, DataSet делать необязательно.
            adapter1.Fill(ds, "Users"); //Загружаем данные в DataSet, таблица создается автоматически
            dataGridView1.DataSource = ds.Tables["Users"].DefaultView; //связываем таблицу в DS с DataGrid
}
 
           
................           
 делаем какие либо изменения в DataGrid
................

Двлее передаем обновления, но для этого должна быть определена логика обновления в DataAdapter:

Код

private void btn_Update_Click(object sender, EventArgs e)
        {
            adapter1.Update(ds, "Users");
            ds.AcceptChanges();   //В данном случае этого вроде можно не делать,  DataAdapter это сделает автоматически           
}          


Добавлено через 8 минут и 59 секунд
Вот тебе еще ссылочка на тему. Туда глянь.

ЗАГЛЯНИ!

Да и вообще поищи в поиске по форуму, много примеров найдешь.. 
--------------------
namespace informatik
PM MAIL   Вверх
shark1
Дата 22.1.2008, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



informatik  я тебя понял и ты прав насчет того что мне не нужно делать(пока)изменения в самом datagridview.У меня есть button Insert,и Delete кот.делают своё дело.Одна вставляет данные другая удаляет(из ДБ),а вот Update должна только показать эти изменения в datagridview(т.е если я что то добавил показать добавленную строку,если удалил что то то обновить datagridview и показать уже без удаленной строки).Но вот что то не срабатывает,вчера перерыл весь форум но так и не нашол ответ :(,восновном все примеры используют запрос Select ... where ..., а мне это не нужно мне нужно только показать обновления.Вот этот код не работает :
 adapter1.Update(ds, "Users");
            ds.AcceptChanges();
на этой строке :adapter1.Update(ds, "Users");
выпадает :Update unable to find TableMapping['Users'] or DataTable 'Users'.
Подскажи что сделать плиззз,зарание спасибо.
PM MAIL   Вверх
thomas
Дата 22.1.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



shark1, 
Приветствую.
Приведи код полность. 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
shark1
Дата 22.1.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



Так нет не какого кода вот этот недоделанный кусок и есть весь(многострадальный :( :( )код. 
adapter1.Update(dataTable);
            DataSet ds = new DataSet();
            adapter1.Update(ds, "Users");
            ds.AcceptChanges();

            dataGridView1.DataSource = ds.Tables["Users"];
PM MAIL   Вверх
informatik
Дата 22.1.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 1
Всего: 6



shark1, А по кнопкам Insert, Delete  я так понял у тебя изменения идут прямо в базу.. не попадая в DataSet???


Метод Update у DataAdapter вносит изменения в БД и поэтому для твоих целей он вообще ненужен..

Если так то в обработчике кнопки Update нужно оставить так:

Код

adapter1.Fill(ds, "Users"); //Загружаем данные в DataSet
dataGridView1.DataSource = ds.Tables["Users"].DefaultView; //связываем таблицу в DS с DataGrid


А вообще как видно проблема может быть не в этом, а в неправильном обявлении и использовании переменных (DataSet и DataAdapter), ты бы действительно выложил весь код, тогда бы быстро нашли твою ошибку...

Это сообщение отредактировал(а) informatik - 22.1.2008, 14:22
--------------------
namespace informatik
PM MAIL   Вверх
shark1
Дата 22.1.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



Большое спасибо за вашу помощь.Вот код(если его так можно назвать :( ?)
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Collections;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.IO;

namespace StoreImagesInSQLServer
{
    public partial class frmImagesStore : Form
    {
        private System.Data.DataTable dataTable;
        //private System.Data.DataSet ds;
        public frmImagesStore()
        {
            InitializeComponent();
            GetImagesFromDatabase();
        }


        //Get table rows from sql server to be displayed in Datagrid.
        void GetImagesFromDatabase()
        {

            try
            {
                OleDbConnection conn = new OleDbConnection();
                conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Data\\Users_DB.mdb";
                //Initialize adapter.
                
                OleDbDataAdapter adapter = new OleDbDataAdapter("Select * from Users", conn);

                //Initialize Dataset.
                DataSet ds = new DataSet();
                dataTable = ds.Tables.Add("Users");

                //Fill dataset with ImagesStore table.
                adapter.Fill(ds, "Users");


                //Fill Grid with dataset.
                dataGridView1.DataSource = ds.Tables["Users"];


                this.txt_WorkNumber.DataBindings.Add("Text", dataTable, "WorkNumber", true, DataSourceUpdateMode.OnPropertyChanged);
                this.txt_FirstName.DataBindings.Add("Text", dataTable, "FirstName", true, DataSourceUpdateMode.OnPropertyChanged);
                this.txt_LastName.DataBindings.Add("Text", dataTable, "LastName", true, DataSourceUpdateMode.OnPropertyChanged);
                this.txt_BirthDate.DataBindings.Add("Text", dataTable, "BirthDate", true, DataSourceUpdateMode.OnPropertyChanged);
                this.txt_Status.DataBindings.Add("Text", dataTable, "Status", true, DataSourceUpdateMode.OnPropertyChanged);
                this.txt_Telephone.DataBindings.Add("Text", dataTable, "Telephone", true, DataSourceUpdateMode.OnPropertyChanged);
                this.txt_Cellular.DataBindings.Add("Text", dataTable, "Cellular", true, DataSourceUpdateMode.OnPropertyChanged);
                this.txt_Address.DataBindings.Add("Text", dataTable, "Address", true, DataSourceUpdateMode.OnPropertyChanged);
                this.txt_Email.DataBindings.Add("Text", dataTable, "Email", true, DataSourceUpdateMode.OnPropertyChanged);
                this.rtb_Remarks.DataBindings.Add("Text", dataTable, "Remarks", true, DataSourceUpdateMode.OnPropertyChanged);
                this.pictureBox1.DataBindings.Add("Image", dataTable, "Photo", true, DataSourceUpdateMode.OnPropertyChanged);



                foreach (DataGridViewColumn column in dataGridView1.Columns) column.SortMode = DataGridViewColumnSortMode.NotSortable;

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void cmdConnect_Click(object sender, EventArgs e)
        {
            //Fill datagrid with table rows.
            GetImagesFromDatabase();

        }

        //Open form to get new image file.
        private void cmdStoreNewImage_Click(object sender, EventArgs e)
        {
            frmNewImage fNew = new frmNewImage();
            //Supply connection string from this form to frmNewImage form.
            fNew.txtConnectionString.Text = txtConnectionString.Text;
            fNew.ShowDialog();

            //Refresh Image
            //cmdConnect_Click(null, null);
        }

        //When user changes row selection, display image of selected row in picture box.
        private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                //Get image data from gridview column.
                byte[] imageData = (byte[])dataGridView1.Rows[e.RowIndex].Cells["Photo"].Value;

                //Initialize image variable
                Image newImage;
                //Read image data into a memory stream
                using (MemoryStream ms = new MemoryStream(imageData, 0, imageData.Length))
                {
                    ms.Write(imageData, 0, imageData.Length);

                    //Set image variable value using memory stream.
                    newImage = Image.FromStream(ms, true);
                }

                //set picture
                pictureBox1.Image = newImage;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }


        private void btn_SaveInExcel_Click(object sender, EventArgs e)
        {
            ExcelAuto excel = new ExcelAuto();

            ArrayList array = new ArrayList();
            bool filled = true;

            if (filled == true)
            {
                array.Insert(0, txt_WorkNumber.Text);
                array.Insert(1, txt_FirstName.Text);
                array.Insert(2, txt_LastName.Text);
                array.Insert(3, txt_BirthDate.Text);
                array.Insert(4, txt_Status.Text);
                array.Insert(5, txt_Telephone.Text);
                array.Insert(6, txt_Cellular.Text);
                array.Insert(7, txt_Address.Text);
                array.Insert(8, txt_Email.Text);
                array.Insert(9, rtb_Remarks.Text);
                array.Insert(10, pictureBox1.Image);

                excel.CreateFile(array);
            }
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Password pas = new Password();
            pas.ShowDialog();
        }

        private void btn_Delete_Click(object sender, EventArgs e)
        {

            try
            {
                this.oleDbConnection = new OleDbConnection();

                oleDbConnection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Data\\Users_DB.mdb";
                this.adapter1 = new OleDbDataAdapter();

                this.adapter1.DeleteCommand = new OleDbCommand();

                this.adapter1.DeleteCommand.Connection = this.oleDbConnection;
                //this.adapter1.oleDbConnection = this.oleDbConnection;

                this.oleDbConnection.Open();

                this.adapter1.DeleteCommand.CommandText =
                 " Delete * from Users where WorkNumber = \'" + this.txt_Find.Text + "\'";


                this.adapter1.DeleteCommand.ExecuteNonQuery();

                this.oleDbConnection.Close();

                MessageBox.Show("Record deleted Successfully \n \n ITEM CLEAR !!!", " Warning !!! Warning !!! Warning !!!", MessageBoxButtons.OK, MessageBoxIcon.Warning);  //inform the user

            }

            catch (System.Data.OleDb.OleDbException exp)
            {

                MessageBox.Show(exp.ToString());
            }
            finally
            {
                //close the connection
                this.oleDbConnection.Close();

            }
            txt_Find.Clear();

        }

        private void txt_Find_TextChanged(object sender, EventArgs e)
        {
            dataTable.DefaultView.RowFilter = "WorkNumber LIKE '" + txt_Find.Text + "%'";
        }

        private void txt_ID_TextChanged(object sender, EventArgs e)
        {
            dataTable.DefaultView.RowFilter = "UserID LIKE '" + textBox1.Text + "%'";
        }

        private void btn_Update_Click(object sender, EventArgs e)
        {
            
            adapter1.Fill(dataSet11, "Users"); //Загружаем данные в DataSet
            dataGridView1.DataSource = dataSet11.Tables["Users"].DefaultView;
        }

    }
}

последний пример вот на этой строке :
adapter1.Fill(dataSet11, "Users");
выпадает на :
No value given for one or more required parameters.
PM MAIL   Вверх
thomas
Дата 22.1.2008, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



shark1, 
Приветствую.
При беглом взгляде на приведенный выше код, увидел следующие ошибки:
1) если уже есть одно соединение и один ДатаАдаптер
Код

OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Data\\Users_DB.mdb";
                //Initialize adapter.
                
OleDbDataAdapter adapter = new OleDbDataAdapter("Select * from Users", conn);

то зачем потом создавать их снова?
Код

private void btn_Delete_Click(object sender, EventArgs e)
        {
            try
            {
                this.oleDbConnection = new OleDbConnection();
                oleDbConnection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Data\\Users_DB.mdb";
                this.adapter1 = new OleDbDataAdapter();

Обьявите глобально соединение и ДатаАдаптер. При загрузке формы создайте обьект соединения и в дальнейшем по мере необходимости его открывайте и закрывайте.
ДатаАдаптер инициируем при загрузке формы. И раз у вас одна таблица так и пользуйте один ДатаАдаптер по мере необходимости.

2) Вот это 
Код
private System.Data.DataTable dataTable;
 явно лишнее. Для отображения данных из таблицы ДатаСет в dataGridView пишем так
Код

dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Users";
 
3)
Цитата

последний пример вот на этой строке :
adapter1.Fill(dataSet11, "Users");
выпадает на :
No value given for one or more required parameters. 

Вы обьявили и создали adapter1 в другом методе. Этот обьект не видим за пределами своего метода. А вызываете его совсем в другом методе. Ай-ай-ай, как не хорошо.
Кстати я так и не понял смысла вот этих действий
Код

 private void btn_Update_Click(object sender, EventArgs e)
        {
            
            adapter1.Fill(dataSet11, "Users"); //Загружаем данные в DataSet
            dataGridView1.DataSource = dataSet11.Tables["Users"].DefaultView;
        }
 Если при загрузке формы в гриде выводятся все данные из таблицы БД(загружены в таблицу ДС). Вы с ними что то там, в гриде, сделали. (Хотя в коде я ничего подобного не заметил. Скорее вы удалили запись из таблицы БД на прямую, а не из ДС. Причем номер удаляемого задавали через текстбокс.) И что теперь? Надо отобразить данные в гриде, но без удаленной строки. Так Очистите таблицу в ДС, откройте соединение и выполните снова метод Fill() для своего ДатаАдаптера как и при загрузке формы. Тогда грид отобразит вам данные которые есть в таблице БД(загруженные в память = таблицу ДС)



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
shark1
Дата 22.1.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



thomas УРА лёд тронулся не знаю что я тут наколдовал,НО если я делаю Insert  а потом Update то все работает как в сказке,даже гад бандинг тоже работает,а вот если я делаю Delete и потом  делаю Update то в(почемуто)вылетает на этой строке :
adapter.Fill(ds, "Users");
пишет :
The SelectCommand property has not been initialized before calling 'Fill'.
Подскажи те плиззз,ОГРОМНОЕ спасибо.
Kod Update:
Код

this.oleDbConnection.Open();
            this.ds.Clear();
            adapter.Fill(ds, "Users");
            this.oleDbConnection.Close();
            dataGridView1.DataSource = ds.Tables["Users"];

PM MAIL   Вверх
informatik
Дата 22.1.2008, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 1
Всего: 6



А я вот непонимаю зачем открывать соединение...

Метод Fill() у датаАдаптера сам открывает и закрывает соединение... или я ошибаюсь.........

Это сообщение отредактировал(а) informatik - 22.1.2008, 17:13
--------------------
namespace informatik
PM MAIL   Вверх
thomas
Дата 22.1.2008, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



shark1, 
Приветствую.
Сделай так.
Код

// объяви на уровне формы
private OleDbCommand dbCmd;
private OleDbConnection dbCon;
private OleDbDataAdapter dbDa;
private DataSet ds;

//далее при загрузке формы инициируй
dbCon = new OleDbConnection();
dbCon.ConnectionString = conStr;
dbCmd = new OleDbCommand();
dbCmd.Connection = dbCon;
dbDa = new OleDbDataAdapter(dbCmd);
ds = new DataSet();
//заполни таблицу в датасет
string sql = "Select * from Users";
dbCmd.CommandText = sql;
dbDa.Fill(ds, "Users");

// и отобрази данные в гриде, как я уже писал выше.

//теперь выполним так называемый "Update" при нажатии кнопки
// для этого повторим присвоение команды и метод Fill() для ДатаСет
dataGridView1.DataSource = null;
string sql = "Select * from Users";
dbCmd.CommandText = sql;
dbDa.Fill(ds, "Users");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Users";



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
shark1
Дата 23.1.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



ВСЕМ ВСЕМ ВСЕМ моим учителям и помошникам,ОГРОМНОЕ СПАСИБО за ваши нервы,за ваше время и вашу помощь,вот он многостродальный код для btn_Update:
Код

private void btn_Update_Click(object sender, EventArgs e)
        {
            adapter = new OleDbDataAdapter(command);
            this.ds.Clear();
            dataGridView1.DataSource = null;
            string sql = "Select * from Users";
            command.CommandText = sql;
            adapter.Fill(ds, "Users");
            ds.AcceptChanges();
            dataGridView1.DataSource = ds;
            dataGridView1.DataSource = ds.Tables["Users"];
          
        }


все работает как надо,и после Insert и после Delit.Спасибо.
PM MAIL   Вверх
informatik
Дата 23.1.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 1
Всего: 6



Просто супер!! Но много лишнего... у меня такой код состоит максимум из 3-х строк!!

Это сообщение отредактировал(а) informatik - 23.1.2008, 19:33
--------------------
namespace informatik
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0679 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.