2017-12-05 8 views
0

たとえば、ユーザーがデータベースにデータを登録または保存した場合、起動時に自動的に特定のフォームにリダイレクトされます...ここでCでデータベースにデータが見つかった場合に起動時にフォームを表示する方法

は、私がこれまで試した、それはそれは私がそれになりたいかに応じて動作していないコードが... Form1ので

です:プログラムで

// I declared the rowcounts as public 
public int rowcounts; 

public void Form1_Load(object sender, EventArgs e) 
{ 
     SqlConnection connCount = locald.DB.GetSqlConnection(); 
     System.Data.SqlClient.SqlCommand com = new 
     System.Data.SqlClient.SqlCommand(); 
     com.Connection = connCount; 
     com.CommandType = CommandType.StoredProcedure; 
     com.CommandText = @"countval"; 
     rowcounts = Convert.ToInt32(com.ExecuteScalar()); 
     label1.Text = rowcounts.ToString(); 
} 

.cs:

static void Main() 
{ 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     Form1 f1 = new Form1(); 

     if (f1.rowcounts == 0) 
     { 
      Application.Run(new Form2()); // if database has no records 
     } 
     else 
     { 
      Application.Run(new Form1()); 
     } 
} 
は、私はこの問題は、データベースが持っている場合でも、ある接続

public class DB 
{ 
    public static string ConnectionString 
    { 
     get 
     { 
      string connStr = ConfigurationManager.ConnectionStrings["locald.Properties.Settings.localdConnectionString"].ToString(); 

      SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(connStr); 
      sb.ApplicationName = ApplicationName ?? sb.ApplicationName; 
      sb.ConnectTimeout = (ConnectionTimeout > 0) ? ConnectionTimeout : sb.ConnectTimeout; 

      return sb.ToString(); 
     } 
    } 

    public static string ApplicationName { get; set; } 
    public static int ConnectionTimeout { get; set; } 

    public static SqlConnection GetSqlConnection() 
    { 
     SqlConnection cnn = new SqlConnection(ConnectionString); 
     cnn.Open(); 
     return cnn; 
    } 
} 

のクラスDB.csを作成したり、データなしで、それはまだ起動時に、Form1を示すだろう。データベースは、データが、それが自動的にForm1にリダイレクトされるだろうし、それはしていない場合、それは起動時にForm2のになる場合私が欲しいのは

+0

に従ってください? theresの言及はありません、あなたのdbコードはform1にあるので、あなたはあなたのテストを行うためにそれを開いていた...私に混乱したロジックのように見える – BugFinder

+0

ああ申し訳ありません私の質問にそれを書くことを忘れてました それは初期化のためですform1 Form f1 = new Form1 –

+0

あなたのプログラムが動作していないのは不思議ではありません:P – BugFinder

答えて

0

欠陥がF1で何、

ですか? Form1.csでSQL関数をコーディングしています。

program.cs ですべてのSQL操作を実行し、クエリ結果に応じてフォームにリダイレクトしないのはなぜですか。

は、以下のように

Program.csの

static void Main() 
     { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 

      int rowcounts = 0; 

      SqlConnection connCount = locald.DB.GetSqlConnection(); 
      System.Data.SqlClient.SqlCommand com = new 
      System.Data.SqlClient.SqlCommand(); 
      com.Connection = connCount; 
      com.CommandType = CommandType.StoredProcedure; 
      com.CommandText = @"countval"; 
      rowcounts = Convert.ToInt32(com.ExecuteScalar()); 


      if (rowcounts == 0){ 
       Application.Run(new Form2()); //if database has no records 
      } 
      else 
      { 
       Application.Run(new Form1()); 
      } 
     } 

のForm1.cs

メインで、F1で何
private void Form1_Load() 
{ 

} 
+0

申し訳ありませんが、f1はForm1からです。f1 = new Form1();私は最初に質問を投稿したときにそれを置くことを忘れた。 –

+0

心配なし、 あなたは単にForm1_Load()からプログラムにあなたのすべてのコードを移動することができます達成することができます。csとSQLの結果としてフォームをロード –

+0

私はそれを行うときに、私はform1から私のコードを置くprogram.csで関数を作成する必要がありますか?または単にprogram.csのメインの静的voidに入れてください。 は申し訳ありませんが、私はProgram.csのに()form1_loadからコードを移動し、私の答えを更新し、C#の.NET –

0
... ..事前に感謝を助けてください...

です

私はコメントとして投稿しますが、低い評判でコメントすることはできません... まず、Program.csに "if"がありません(本当の問題ではないと思います。 ?)

第2に、簡単な解決策と同じように、「初期化」の右に表示したくない場合は、フォーム1で「閉じる」を呼び出すことができます。そのような

:あなたのプログラムで

private void Form1_Load(object sender, EventArgs e) 
     { 
      //... 
      //Your code 
      //... 

      // If no data 
      this.Close(); 
     } 
+0

申し訳ありませんが、実際のコードに "if"があります。質問を投稿したときに入力エラーが発生しました:) –

+0

まだ動作しません... –

+0

@MichaeldeLegazpi私は例で私の答えを編集しました。 – MaxB

関連する問題