DBGrid显示字符串字段的值为“(MEMO)”

9
我正在尝试使用Lazarus和SQLdb组件编写一个简单的SQLite应用程序。
我连接到数据库并填充了一个TDBGrid。问题是,所有文本字段显示值“(MEMO)”,而不是数据库中的字符串。

在数据库中更改列类型可以解决此问题,请参见我的回答 - Wolf
12个回答

0

另一个选项

如果您正在使用TZConection,请在连接数据库时将此行添加到您的代码中

TZConnection).Properties.Add('Undefined_Varchar_AsString_Length=100'); 

那怎么可能编译通过呢? - Freddie Bell
那怎么可能编译通过呢? - undefined

-1
本文提供了一个解决方案:在Delphi的TDBGrid中显示和编辑MEMO字段
以下是你需要做的总结:
  • 在 .dfm 文件中,为属于您的数据集(例如一个名为 MyDataSet 的 TTable)的 TMemoField(此处命名为 MyField)添加 OnGetText = MyDataSetMyFieldGetText
  • 在 .pas 文件中 > interface > type > 在您的表单定义内部添加

    procedure MyDataSetMyFieldGetText(Sender: TField; var Text: string; DisplayText: Boolean);
    
  • 在 .pas 文件中 > implementation > 添加以下方法

    procedure TDM.WorkVisiteNoteGetText(Sender: TField; var Text: string; DisplayText: Boolean);
    begin
      Text := Copy(WorkVisiteNote.AsString, 1, 100);
    end;
    

2
为什么需要在 .dfm 文件中添加 *?如果您有一个持久化字段,可以在结构视图中选择该字段(或在对象检查器顶部的下拉列表中选择),并使用对象检查器的事件选项卡来完成此操作,IDE 将为您生成事件处理程序的存根代码。 - Ken White

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接