2012-01-19 18 views
0

以下のクエリから特定のフィールドをテキストファイルにエクスポートしようとしています。私が直面している問題は、エクスポートするときにテキストファイルに1つのレコードしか表示されないことです。このテキストファイルにクエリ結果を追加したくないという問題もあります。複数のレコードを含むテキストファイルにクエリ結果をエクスポートするにはどうすればよいですか?

また、線の一部が

odbccon.Open(); 
    OdbcCommand getcartons = new OdbcCommand("select * from wm242basd.chcart00 where chldno = '0010585567'", odbccon); 
    OdbcDataAdapter adp = new OdbcDataAdapter(getcartons); 
    OdbcDataReader odbcr = getcartons.ExecuteReader(); 
    while (odbcr.Read()) 
    { 
     cartonnumber = odbcr["chcasn"].ToString() + "     "; 
     storenumber = odbcr["chstor"].ToString() + " "; 
     weightlbs = odbcr["chacwt"].ToString(); 
    } 

    #region 


    //Assign values to each String for Header Record - Type "A" 
    constantA = "A"; 
    fileidentifier = "ASN"; 
    clientidentifier = "1111";      //Currently Pending on Call from Friday 
    primaryscac = "1111";       //Currently Pending on Call from Friday 
    dcidentifier = "ONT"; 
    shipmentID = "0010585567 ";      //This String could come from DataBase OR could be populated from TextBox by User 
    masterBOL = "        "; //This String could come from DataBase 
    buildingID = " ";       //Currently Pending on Call from Friday 

    //Create Header Record - Type "A" 
    w.WriteLine(constantA + fileidentifier + clientidentifier + primaryscac + dcidentifier + shipmentID + masterBOL + buildingID); 


    //Assign values to each String for Load Record - Type "T" 
    constantT = "T"; 
    trailerclosedate = DateTime.Now.ToString("yyyyMMdd"); 
    trailerclosetime = DateTime.Now.ToString("HHmm"); 
    trailernumber = "   ";     //Pending on App Accessability OR could be populated from TextBox by user 
    sealnumber = "   "; 
    expectedarrivaldate = DateTime.Now.AddDays(5).ToString("yyyyMMdd"); 
    expectedarrivaltime = DateTime.Now.AddHours(3).ToString("HHmm"); 
    trailerserialnumber = "   "; 
    carrier = " "; 

    //Create Load Record - Type "T" 
    w.WriteLine(constantT + trailerclosedate + trailerclosetime + trailernumber + sealnumber + expectedarrivaldate + expectedarrivaltime + trailerserialnumber + carrier); 


    //Assign values to each String for Store Record - Type "B" 
    constantB = "B"; 
    deliverycarrierSCAC = " "; 
    clientroute = "   "; 
    businesscode = " "; 
    //storenumber = "1001 ";  //This String should come from the DataBase 
    clientbolnumber = "   "; 
    terminalcode = " "; 
    deliverydays = "000"; 
    deliverystarttime = " "; 
    deliveryendtime = " "; 
    carrierpro = "   "; 
    expecteddeliverydate = "  "; 

    //Create Store Record - Type "B" 
    w.WriteLine(constantB + deliverycarrierSCAC + clientroute + businesscode + storenumber + clientbolnumber + terminalcode + deliverydays + deliverystarttime + deliveryendtime + carrierpro + expecteddeliverydate); 


    //Assign values to each String for Store Record - Type "C"   
    constantC = "C"; 
    //cartonnumber = "1002333323569     "; //This String should come from DataBase 
    //weightlbs = "0000000";        //This String could also come from DataBase 
    cubicfeet = "0000000"; 
    conveyable = "Y"; 
    specialhandling = "    "; 
    cartonvalue = "00000000"; 
    cartonretail = "00000000"; 
    units = "0000";          //This String could also come from DataBase 
    palletnumber = "        ";  //This String could also come from DataBase 

    //Create Store Record - Type "C" 
    w.WriteLine(constantC + cartonnumber + weightlbs + cubicfeet + conveyable + specialhandling + cartonvalue + cartonretail + units + palletnumber); 


    //Assign values to each String for Store Record - Type "D" 
    constantD = "D"; 
    totalstorecartons = "0000023";      //This String should come from DataBase 
    totalstoreweight = "000000000";      //This String could come from DataBase 
    totalstorecubicfeet = "000000000"; 

    //Create Store Record - Type "D" 
    w.WriteLine(constantD + totalstorecartons + totalstoreweight + totalstorecubicfeet); 


    //Assign values to each String for Store Record - Type "E" 
    constantE = "E"; 
    totaltrailercartons = "0000023";     //This String should come from DataBase 
    totaltrailerweight = "000000000";     //This String could come from DataBase 
    totaltrailercubicfeet = "000000000"; 

    //Create Store Record - Type "E" 
    w.WriteLine(constantE + totaltrailercartons + totaltrailerweight + totaltrailercubicfeet); 
    #endregion 

    //Maintenance and Close 
    w.Flush(); 
    w.Close(); 

} 

答えて

0

あなたのwhileループを繰り返し三つの変数を設定しているが、ループが実行されると、各変数は値を1つだけ持つ、繰り返す必要はありません。

このように、最後のレコードの値とその値のみがファイルに書き込むときに使用されます。

動き、それはあなたが各データレコードに対して実行されますが、ファイルが前に開かれていることを確認し、whileループ

+0

後にクローズすることを希望するすべてのコードを含んでいるので、whileループのエンドブレースはにそれは可能ですブレース内の特定のコードをすべてのレコードで繰り返さないようにしますか? – jorame

+0

確かに...各レコードに対して実行する必要のないコードは、whileループの外側に移動することができます – jimmym715

+0

ブレース内にコードが必要な場合はどうなりますか?事前にあなたの助けをありがとう。 – jorame

関連する問題