2010-10-24 22 views
0

[a obtenu un peu plus loin si sa mise à jour]obtenir mes données d'accès 2003 db en C# (erreur dbReader.GetString)

Bonjour Là-bas, je l'espère vraiment que vous êtes en mesure de me aider!

Maintenant, la première partie de mon code fonctionne, et je récupère mes numéros de rapport dans ma liste déroulante, et je suis capable d'écrire ce nombre à un lbl. maintenant je dois prendre ce nombre et obtenir le reste de mes données à partir de ma base de données Access 2003, et les déposer dans une chaîne (ma sortie). (Je ne veux pas vraiment toutes les données chargées dans mon mem quand j'ouvre le programme, donc je crois seulement obtenir le [Rapport nr] jusqu'à ce que j'en choisisse un, où je chargerai les données dans la chaîne et l'enregistrerai maintenant): Mon problème est que cela ne fonctionnera pas!

output = dbReader.GetString(dbReader.GetOrdinal("Dato")).ToString(); 

OBS: mon erreur est maintenant qu'il dit que je n'ai pas de données dans mes lignes ou coloums

mon code est comme suit:

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.Collections; 
using System.Data.OleDb; 


namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     private string aktuelRapportNR = ""; 
     string output = ""; 

     private string connectionName = "Provider=Microsoft.Jet.OLEDB.4.0;" 
      + "Data Source=semcqdjh-access 2007.mdb;" 
      + "Jet OLEDB:Database Password=;"; 




     public Form1() 
     { 
      InitializeComponent(); 
      #region Indlæsning af combobox, med rapport numre 
      OleDbConnection Myconnection = null; 
      OleDbDataReader dbReader = null; 

      Myconnection = new OleDbConnection(connectionName); 
      Myconnection.Open(); 

      OleDbCommand cmd = Myconnection.CreateCommand(); 
      cmd.CommandText = "SELECT [Rapport nr] FROM AVR"; 
      dbReader = cmd.ExecuteReader(); 

      int rapportNR; 
      while (dbReader.Read()) 
      { 
       rapportNR = (int)dbReader.GetInt32(dbReader.GetOrdinal("Rapport nr")); 

       comboBox1.Items.Add(rapportNR); 

      } 

      dbReader.Close(); 
      Myconnection.Close(); 


#endregion 
     } 


     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      aktuelRapportNR = comboBox1.SelectedItem.ToString(); 
      lblAktuelRapportNR.Text = aktuelRapportNR; 

      OleDbConnection Myconnection = null; 
      OleDbDataReader dbReader = null; 

      Myconnection = new OleDbConnection(connectionName); 
      Myconnection.Open(); 

      OleDbCommand cmd = Myconnection.CreateCommand(); 
      cmd.CommandText = "SELECT [Dato] FROM AVR WHERE [Rapport nr] =" + aktuelRapportNR; 
      dbReader = cmd.ExecuteReader(); 

      try 
      { 
       output = dbReader.GetString(dbReader.GetOrdinal("Dato")).ToString(); 

      } 
      catch (Exception) 
      { 
       output = "fejl eller tom"; 
      } 
      dbReader.Close(); 
      Myconnection.Close(); 

      label1.Text = output; 
     } 

     private void btnExport_Click(object sender, EventArgs e) 
     { 

     } 


    } 
} 
+0

juste vu moi-même donc je mis à jour mon post et est allé un peu plus loin: P merci quand même: P –

+0

OBS: mon erreur est maintenant qu'il dit que je n'ai pas de données dans mes rangées ou coloums –

+0

son accord: P c'est fait maintenant: D merci pour l'aide: P Bien je ne pense pas que mon problème est avec la base de données, bien que j'obtienne mes nombres dans la première partie du code, mais pas les autres données dans la seconde? –

Répondre

0

je me suis dit ceci: Après une pause je suis retourné à ceci et j'ai essayé de voir s'il y avait une autre méthode que je pouvais utiliser et il y avait: P i figuré par l'erreur que c'était correctement quelque chose sur les types tellement en train d'en sortir et d'essayer de contourner que j'ai pris la rangée de trous et placé dans un tableau d'objets: P en utilisant GetValues ​​dans le dbReader je l'ai fait fonctionner, donc je peux maintenant passer à autre chose: D pour ceux qui pourraient être intéressés! voici mon code: P son pas joli, mais cela fonctionne: P i allso pris des prises de som juste essayer de vous assurer que je vérifie les erreurs et obtenir un responsab amical que :)

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.Collections; 
using System.Data.OleDb; 


namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     private string aktuelRapportNR = ""; 
     string output; 

     private string connectionName = "Provider=Microsoft.Jet.OLEDB.4.0;" 
      + "Data Source=semcqdjh-access 2007.mdb;" 
      + "Jet OLEDB:Database Password=;"; 




     public Form1() 
     { 
      InitializeComponent(); 
      #region Indlæsning af combobox, med rapport numre 
      try 
      { 

       OleDbConnection Myconnection = null; 
       OleDbDataReader dbReader = null; 

       Myconnection = new OleDbConnection(connectionName); 
       Myconnection.Open(); 

       OleDbCommand cmd = Myconnection.CreateCommand(); 
       cmd.CommandText = "SELECT [Rapport nr] FROM AVR"; 
       dbReader = cmd.ExecuteReader(); 

       int rapportNR; 
       while (dbReader.Read()) 
       { 
        rapportNR = (int)dbReader.GetInt32(dbReader.GetOrdinal("Rapport nr")); 

        comboBox1.Items.Add(rapportNR); 

       } 

       dbReader.Close(); 
       Myconnection.Close(); 
       txtStatus.Text = "Indlæsning Fuldført! Vælg venligst en rapport"; 
      } 
      catch (Exception) 
      { 

       txtStatus.Text = "Indlæsning Fejlet!"; 
      } 

#endregion 
     } 


     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      aktuelRapportNR = comboBox1.SelectedItem.ToString(); 
      lblAktuelRapportNR.Text = aktuelRapportNR; 

      txtStatus.Text = "Du har valgt rapport nr.: " + aktuelRapportNR + "! Klik på export"; 
     } 

     private void btnExport_Click(object sender, EventArgs e) 
     { 
      try 
      { 

       OleDbConnection Myconnection = null; 
       OleDbDataReader dbReader = null; 

       Myconnection = new OleDbConnection(connectionName); 
       Myconnection.Open(); 

       OleDbCommand cmd = Myconnection.CreateCommand(); 
       cmd.CommandText = "SELECT * FROM AVR WHERE [Rapport nr] =" + aktuelRapportNR; 
       dbReader = cmd.ExecuteReader(); 

       object[] liste = new object[dbReader.FieldCount]; 
       if (dbReader.Read() == true) 
       { 

        int NumberOfColums = dbReader.GetValues(liste); 

        for (int i = 0; i < NumberOfColums; i++) 
        { 
         output += "|" + liste[i].ToString(); 
        } 

       } 

       dbReader.Close(); 
       Myconnection.Close(); 
       txtStatus.Text = "Export Lykkes! Luk programmet!"; 
      } 
      catch (Exception) 
      { 

       txtStatus.Text = "Export Fejlet!"; 
      } 


     } 


    } 
}