Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Access-Memofeld mit ASP.NET auslesen

  Alt 21. Okt 2006, 00:13
Hi zusammen
Hmmm....
2 Versionen der Prozedur, dasselbe Ergebnis:
Delphi-Quellcode:
procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs);
 var Tabelle : System.Data.DataTable; i: integer; StriBu: StringBuilder;
     Zeile: TableRow; Zelle : TableCell; TZ,j: Integer; cRow:DataRow; cCol:DataColumn;
     CreateDate,ZellShow,ZellText,ZellInhalt,HeVa :System.String;
begin
      BdpDataAdapter1.Active:=True;
      BdpDataAdapter1.Fill(Dataset1);
      Tabelle := Dataset1.Tables[0];
      For j := 0 to Tabelle.Rows.Count-1 do begin
         cRow := Tabelle.Rows[j];
         For i := 0 to Tabelle.Columns.Count-1 do begin
            cCol := Tabelle.Columns[i];
            if cCol.ColumnName='Content_IDthen
               ZellInhalt := cRow[i].ToString;
            if cCol.ColumnName='Textthen begin
               HeVa := cRow[i].ToString;
               StriBu := Stringbuilder.Create(cRow[i].ToString);
               ZellText := StriBu.Append(HeVa).ToString;
            end;
            if cCol.ColumnName='Visiblethen
               ZellShow := cRow[i].ToString;
            if cCol.ColumnName='Edit_Datethen
               CreateDate := cRow[cCol.Ordinal].ToString;
            Label1.Text := CreateDate;
            Label2.Text:= ZellShow;
            Label3.Text := Zelltext;
            Label4.Text := ZellInhalt;
            Listbox1.Items.Add(cCol.ColumnName.ToString + ' = '+ cRow[cCol.Ordinal].ToString);
         end;
      end;
Contra
Delphi-Quellcode:
procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs);
 var Tabelle : System.Data.DataTable; i: integer; StriBu: StringBuilder;
     Zeile: TableRow; Zelle : TableCell; TZ,j: Integer; cRow:DataRow; cCol:DataColumn;
     CreateDate,ZellShow,ZellText,ZellInhalt:System.String;
begin
      BdpDataAdapter1.Active:=True;
      BdpDataAdapter1.Fill(Dataset1);
      Tabelle := Dataset1.Tables[0];
      For j := 0 to Tabelle.Rows.Count-1 do begin
         cRow := Tabelle.Rows[j];
         For i := 0 to Tabelle.Columns.Count-1 do begin
            cCol := Tabelle.Columns[i];
            if cCol.ColumnName='Content_IDthen
               ZellInhalt := cRow[i].ToString;
            if cCol.ColumnName='Textthen
               ZellText := cRow[i].ToString;
            if cCol.ColumnName='Visiblethen
               ZellShow := cRow[i].ToString;
            if cCol.ColumnName='Edit_Datethen
               CreateDate := cRow[cCol.Ordinal].ToString;
            Label1.Text := CreateDate;
            Label2.Text:= ZellShow;
            Label3.Text := Zelltext;
            Label4.Text := ZellInhalt;
            Listbox1.Items.Add(cCol.ColumnName.ToString + ' = '+ ZellText);
         end;
      end;
      BdpDataAdapter1.Active:=False;
Zur Erinnerung:

Zitat:
Delphi-Quellcode: markieren
ZellText := cRow[cCol.Ordinal].ToString;

Mit dieser Zeile lese ich in einem DataSet ein Feld aus, das aus einer Access-Datenbank stammt und da als Memo deklariert ist. Dazu verwende ich die Bdp-Komponenten.
In der Datenbank habe ich mittlerweile die Unicode-Kompression für dieses Feld abgeschaltet. Trotzdem erhalte ich bei einem Probelauf die Testausgabe "System.Char[]" anstelle des tatsächlichen Textes.
Andere Felder, die in der Datenbank als "Text" deklariert sind, werden korrekt ausgegeben.
Zitat:
Der Wert des Items in der DataRow ist ein Char Array, aber ein Char Array ist nur ein Array und wird seine Chars nicht als String ausgeben wenn man ToString auf ihn ausführt.
Meiner erster Versuch war, eine Char-Array-Variable zu deklarieren und dieser den Wert von cCol.Columns[i] zuzuweisen - interessant ist, dass der Compiler meckerte, dass String und Char-Array nicht kompatibel wären. Da die Variable als Char-Array deklariert war, ist klar, wo der String enthalten ist.

Das Problem ist also weiterhin ungelöst.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat