小编maf*_*oft的帖子

如何列出SQL Anywhere中的所有用户表及其行数?

我想在我的数据库中列出所有可用的表,并能够按行计数排序和过滤.

sql sybase sqlanywhere

9
推荐指数
1
解决办法
1万
查看次数

单个查询以删除和显示重复记录

在接受采访时提出的一个问题是,

一张表有100条记录.其中50个是重复的.是否可以使用单个查询从表中删除重复记录,以及选择并显示剩余的50个记录.

这可能在单个SQL查询中吗?

谢谢

SNA

sql sql-server duplicate-removal

5
推荐指数
1
解决办法
2594
查看次数

避免在.Net DataContractSerializer中使用"http://www.w3.org/2001/XMLSchema-instance"命名空间

我有一系列的类,我在.NET 4.0中使用.NET的DataContractSerializer转换为XML.序列化工作正常,我可以解析XML并在以后重新创建.NET对象而没有任何困难.

但是,大多数DataMember都不是必需的.[DataMember(IsRequired = false)].这非常适用于反序列化XML,然后您可以在文档中错过XML节点,但在将现有对象序列化为XML时,DataContractSerializer坚持将具有空值的属性写为具有属性的节点,例如

[DataContract(Name = "response", Namespace = "http://domain.com/name")]
public class MyResponseClass
{
    [DataMember(Name = "count", IsRequired = true, Order = 0)]
    public int Count { get; set; }

    [DataMember(Name = "info", IsRequired = false, Order = 1)]
    public InfoClass Info { get; set; }

    [DataMember(Name = "metadata", IsRequired = false, Order = 2)]
    public MetadataList Metadatas { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

可以序列化

<response xmlns="http://domain.com/name">
    <count>4</count>
</response>
Run Code Online (Sandbox Code Playgroud)

但是,如果我序列化对象,它会创建:

<response xmlns="http://domain.com/name" xmlns:i="http://www.w3.org/2001/XmlSchema-instance">
    <count>4</count>
    <info i:nil="true" />
    <metadata i:nil="true" /> …
Run Code Online (Sandbox Code Playgroud)

.net c# xml datacontractserializer netdatacontractserializer

5
推荐指数
1
解决办法
7131
查看次数

如何正确释放Firemonkey控件,在这种情况下是父窗体的子窗体?

从控件本身的事件处理程序内部,我想删除并释放它.

一个典型的用例TFmxObject.Release,不是吗?但是,它似乎只能在Windows下运行,但不能在Android上运行,而且此方法现在弃用.

我知道,不起作用不是一个很好的问题描述,但目前我无法在android下调试它.在Windows下,我看到事件处理程序.Release在完成之后继续正确,在我的控件析构函数中执行我的日志消息.在Android下,应用程序挂起.

当我使用.Free它时,它仍然在Windows下工作(析构函数立即发生,但处理程序在免费后不访问控件),而在Android中没有明显的问题,但析构函数从未被调用,所以我有一个泄漏.

随着.DisposeOf效果是一样的有.Release-视窗OK,Android的挂起.

我也尝试过,MyParent.RemoveComponent(MyControl)但一切都没有用.

我还需要做些什么来发布所有引用,以便ARC可以完成它的工作?或者怎么回事?

delphi android automatic-ref-counting firemonkey

4
推荐指数
1
解决办法
424
查看次数

如果没有唯一键,如何删除sybase中的重复行?

是的,你可以多次找到类似的问题,但是:这里发布的最优雅的解决方案适用于SQL Server,但不适用于Sybase(在我的案例中是Sybase Anywhere 11).我甚至发现一些与Sybase相关的问题被标记为SQL Server问题的重复,这没有帮助.

我喜欢但不起作用的解决方案的一个例子是WITH ... DELETE ...构造.

我找到了使用游标或while循环的工作解决方案,但我希望没有循环可能.

我希望有一个漂亮,简单和快速的查询,只删除除了一个完全重复的所有内容.

这里有一个小测试框架:

IF OBJECT_ID( 'tempdb..#TestTable' ) IS NOT NULL
  DROP TABLE #TestTable;

CREATE TABLE #TestTable (Column1 varchar(1), Column2 int);

INSERT INTO #TestTable VALUES ('A', 1);
INSERT INTO #TestTable VALUES ('A', 1); -- duplicate
INSERT INTO #TestTable VALUES ('A', 1); -- duplicate
INSERT INTO #TestTable VALUES ('A', 2);
INSERT INTO #TestTable VALUES ('B', 1);
INSERT INTO #TestTable VALUES ('B', 2);
INSERT INTO #TestTable VALUES ('B', 2); -- duplicate
INSERT …
Run Code Online (Sandbox Code Playgroud)

sql sybase sqlanywhere duplicate-removal

2
推荐指数
1
解决办法
2万
查看次数

如何将 Variant(包含数组)转换为数组,并将其作为参数传递?

我需要调用一个需要 的函数array of Integer,但我的值位于一个类型为 的变量中Variant,其中包含数组。

我真的必须在循环中复制值吗?我找不到更好的方法。

相同的变体也可以保存单个Integer而不是数组,因此我创建了一个允许两者都使用的辅助函数(使用 进行检查VarIsArray)。它有效,但它很长而且不好:)

type
  TIntegerArray = array of Integer;

function VarToArrayInt(const V: Variant): TIntegerArray;
var
  I: Integer;
begin
  if VarIsArray(V) then begin
    SetLength(Result, VarArrayHighBound(V, 1) + 1);
    for I:= 0 to High(Result) do Result[I]:= V[I];
  end else begin
    SetLength(Result, 1);
    Result[0]:= V;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我正在使用 Delphi 10.2.2 并且无法更改要调用的函数,如下所示:

function Work(Otherparameters; const AParams: array of Integer): Boolean;
Run Code Online (Sandbox Code Playgroud)

arrays delphi variant

2
推荐指数
1
解决办法
1483
查看次数

Delphi 中将数组转换为 const 数组

我正在寻找一种简单且理想通用(或使用泛型)的方法将 an 转换arrayarray of const(= array of TVarRec)。我的具体情况是我有一个array of Variant并想将其传递给该Format()函数。

这是我到目前为止所发现的,但对我来说看起来很黑客:

function MyFormat(const Fmt: string; const Args: TArray<Variant>): string;
var
  A: array of TVarRec;
  I: Integer;
begin
  SetLength(A, Length(Args));
  for I:= Low(Args) to High(Args) do begin
    A[I].VType:= vtVariant;
    A[I].VVariant:= @Args[I];
  end;
  Result:= Format(Fmt, A);
end;
Run Code Online (Sandbox Code Playgroud)

似乎有效。安全吗?

可以做得更短、更好、更快吗?或者我可以用现成的东西来代替吗?:)


只是一些额外的想法和有趣的事实:

System.Rtti.TValue最近成为我的朋友。然而,这里似乎缺少一个功能。我可以使用 读取我的数组TValue.From(),但似乎没有办法将其作为 读取array of TVarRec。有一个很棒的TValueArrayToArrayOfConst,但它并没有真正的帮助,因为我必须构造一个第一个,它与存储在单个...array of TValue中的数组不同:(TValue

至少 TValue 能够将单个元素输出为 TVarRec,因此我认为我可以为所有类型的数组创建一个通用转换器。但...

你认为这有效吗?

for …
Run Code Online (Sandbox Code Playgroud)

arrays delphi type-conversion delphi-10.2-tokyo

2
推荐指数
1
解决办法
1970
查看次数