2016-03-30 17 views
-2

Ich habe folgende Fehlermeldung:C# Fehler: Variable Bit verwendet als Methode

view('rs' is a variable bit it is used as a 'method')

Ich verstehe nicht, warum. Bitte beraten. Vielen Dank!

public void loadFirst() 
{ 
    ListView1.Items.Clear(); 
    Connection connect = new Connection(); 
    ADODB.Recordset rs = new ADODB.Recordset(); 
    var _with2 = connect; 
    _with2.open(); 
    string SQL = "SELECT * FROM CA"; 
    rs.Open(SQL, _with2.conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic); 
    if (rs.RecordCount != 0) 
    { 
     while (!rs.EOF) { 
      ListViewItem lv =  ListView1.Items.Add(rs("ProjectName").Value); 
      lv.SubItems.Add(rs("ItemName").Value); 
      lv.SubItems.Add(rs("Amount").Value); 
      lv.SubItems.Add(rs("Budget").Value); 
      lv.SubItems.Add(rs("Expenses").Value); 
      lv.SubItems.Add(rs("Total").Value);        
      rs.MoveNext(); 
     } 
    } 
    _with2.close(); 
} 
+0

'rs (" ProjectName ")' ruft eine Methode auf 'rs' auf. Vielleicht sollte es stattdessen 'rs [" ProjectName "]' 'sein? Auch - formatieren Sie bitte Ihren Code, bevor Sie ihn hier veröffentlichen – Rob

+1

Die Antwort liegt in der Frage, rs ist eine Variable, sie wird von der neuen ADODB.RecordSet(); aber wenn man sie anruft, nennt man sie wie eine Methode, Funktion oder Aktion. Ohne die komplette Bibliothek zu kennen, werde ich keine Antwort geben, aber ich würde vorschlagen, anstelle von rs ("ProjectName") rs ["ProjectName"] –

Antwort

0

In C# müssen Sie eckige Klammern verwenden, wenn Indexer Eigenschaft des Objekts ADODB.Recordset rs erreichbar. Verwenden Sie beispielsweise rs("Budget")rs["Budget"].

0

Versuchen Sie, eines der beiden zu verwenden.

string val = (string)rs.Fields["ProjectName"].Value; // using column name. 

oder

string val = rs.Fields[1].Value.ToString(); // using index 
0

(...), nachdem eine Kennung signalisiert, dass die Kennung eine Funktion ist, und dass die Gegenstände zwischen den Klammern die tatsächlichen Werte für die Parameter der Funktion sind.

MSDN C# operators definiert, dass() eine Funktion Aufruf Operator

rs ist die Kennung ein Objekt eine Instanz einer Klasse. Es ist keine Funktion, Sie können (...) nicht verwenden.

Vielleicht suchen Sie nach der Indexeigenschaft. Eckige Klammern signalisieren, dass das Objekt als eine Abfolge von Elementen betrachtet werden kann, wobei der Wert zwischen den eckigen Klammern als Index verwendet werden kann. Allgemeine Verwendungszwecke der eckigen Klammern sind die Ganzzahlindizes in Arrays, Listen, Auflistungen, aber der Wert zwischen den eckigen Klammern muss keine ganze Zahl sein. Bei Verwendung eines Dictionarys ist der Typ zwischen den Klammern ein Wert des Schlüsseltyps.

AdobDb.Recordset hat auch eine Indexeigenschaft click to view. Vielleicht wolltest du das hier nennen?

Verwandte Themen