1

Access テーブルから .csv ファイルを作成するプログラムを作成しようとしています。これを行う方法がわかりません.csvファイルからAccessテーブルを作成するという、逆の方法を調査中に見つけたものはすべてです。

これまでのところ、ユーザーがアクセス ディレクトリ (.mdb) へのデータ パスを選択できるようにする Windows フォーム アプリケーションを作成し、[移動] ボタンを押すと、ディレクトリ内のテーブルのリストがリスト ボックスに表示されます。 .

次に行う必要があるのは、方法がわかりませんが、ユーザーがテーブルの 1 つを選択できるようにすることです。これにより、選択したテーブルから .csv ファイルが作成されます。これまでの私のコードは次のとおりです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.Common;

namespace TranslatorHelper
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    private void btnPath_Click(object sender, EventArgs e)
    {
        string dialogText = "";
        // Show the dialog and get result.
        DialogResult result = openFileDialog1.ShowDialog();
        if (result == DialogResult.OK) // Test result.
        {
            dialogText = openFileDialog1.ToString();
            dialogText = dialogText.Replace("System.Windows.Forms.OpenFileDialog: Title: , FileName: ", "");
            txtDataPath.Text = dialogText;
        }
    }

    private void btnGetTables_Click(object sender, EventArgs e)
    {
        // Microsoft Access provider factory
        DbProviderFactory factory =
        DbProviderFactories.GetFactory("System.Data.OleDb");

        DataTable userTables = null;

        using (DbConnection connection = factory.CreateConnection())
        {
            connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+txtDataPath.Text;

            // We only want user tables, not system tables
            string[] restrictions = new string[4];
            restrictions[3] = "Table";

            connection.Open();

            // Get list of user tables
            userTables = connection.GetSchema("Tables", restrictions);
        }

    // Add list of table names to listBox
    for (int i = 0; i < userTables.Rows.Count; i++)
    lstTables.Items.Add(userTables.Rows[i][2].ToString());

    }

    private void lstTables_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

できる限りのアドバイスを提供してください。何でも感謝します。私は本当にここで立ち往生しています。

4

1 に答える 1