是否有人使用Visual Studio 2010将VB6项目迁移到.Net?
我已经在VS2005中测试了迁移,但是由此产生的.Net代码被搞砸了,我们决定不迁移到.Net.那么在VS2005或VS2008中VS2010迁移向导是否已经改进了向导?
我在处理遗留代码时已经注意到几次,你可以使用.在sql中做左右外连接
=*
Run Code Online (Sandbox Code Playgroud)
作为"右外连接"的简写
*=
Run Code Online (Sandbox Code Playgroud)
作为这样的语句中"左外连接"的简写:
select table1.firstname, table2.lastname
from table1, table2
where table1.id *= table2.id
Run Code Online (Sandbox Code Playgroud)
我猜想还有其他像这两种运算符用于不同类型的连接,但我还没有找到任何关于它的完整文档.所以你知道任何与文档有关的好链接吗?
我个人认为我使用这些运算符看到的SQL语句比使用拼写语法时更难以弄清楚,因此使用速记版本有什么好处吗?
我正在开发一个C#项目,我需要生成随机密码.
任何人都可以为密码生成提供一些代码或高级方法吗?
应该可以指定以下内容:
我一直在想如何将所有存储过程放在源代码控制下的SQL 2000上.
我们正在使用Subversion来处理所有正常的源代码,所以如果使用Subversion解决问题会很好.
你有什么想法?
更新16-02-2009:这是我用于导出所有存储过程的vbs脚本:
Set con = CreateObject("ADODB.Connection")
con.ConnectionString = "*** Database connection string here ***"
con.Open
Set rs = CreateObject("ADODB.RecordSet")
rs.ActiveConnection = con
strSQL = "SELECT ROUTINE_NAME, ROUTINE_DEFINITION " & _
"FROM INFORMATION_SCHEMA.routines " & _
"WHERE ROUTINE_NAME NOT LIKE 'dt_%' " & _
"ORDER BY 1"
Set fso = CreateObject("Scripting.FileSystemObject")
rs.Open strSQL
While Not rs.Eof
filename = rs("ROUTINE_NAME") & ".sql"
routineSQL = rs("ROUTINE_DEFINITION")
Set tf = fso.CreateTextFile(filename, True)
tf.Write routineSQL
tf.Close
set tf = Nothing
rs.MoveNext
Wend …Run Code Online (Sandbox Code Playgroud) 我有这个子来初始化我的记录器:
sub initLogfiles{
Log::Log4perl->easy_init($INFO); # We log all debug, info, warn, error and fatal messages.
my $userlogappender = Log::Log4perl::Appender->new(
"Log::Log4perl::Appender::File",
filename => USERLOGFILE,
mode => "append",
recreate => 1
);
my $userloglayout = Log::Log4perl::Layout::PatternLayout->new("%d;%m%n");
$userlogappender->layout($userloglayout);
$userlogger->add_appender($userlogappender);
}
Run Code Online (Sandbox Code Playgroud)
我只想在我的日志文件中有loginfo.我如何防止这次登录到stdout?
我有一个令人讨厌的SQL语句似乎很简单,但它看起来很糟糕.我希望sql返回带有userdata的结果集,以便某个用户是结果集中的第一行,如果用户的emailaddress在公司表中.
我有这个SQL返回我想要的但我觉得它看起来很糟糕:
select 1 as o, *
from Users u
where companyid = 1
and email = (select email from companies where id=1)
union
select 2 as o, *
from Users u
where companyid = 1
and email <> (select email from companies where id=1)
order by o
Run Code Online (Sandbox Code Playgroud)
顺便说一句,来自用户表的emailaddress可以在很多公司,所以不能加入emailaddress :-(
您对如何改进该声明有任何想法吗?
我正在使用Microsoft SQL Server 2000.
编辑:我使用这个:
select *, case when u.email=(select email from companies where Id=1) then 1 else 2 end AS SortMeFirst
from Users u
where u.companyId=1
order by …Run Code Online (Sandbox Code Playgroud) 我的一个项目中有一个烦人的问题,即生产环境使用Microsoft Office 2000,而我们在开发环境中只有Microsoft Office 2003.
我使用自动化对Word文档进行一些操作,以便在生产环境和开发环境中使用它,我必须将条件编译器语句放入我使用自动化的所有文件中的代码的using部分.
#if DEVELOPEMENT
using Word = Microsoft.Office.Interop.Word;
#else
using Office;
#endif
Run Code Online (Sandbox Code Playgroud)
编辑:我知道明显的解决方案是让Microsoft Office 2000进入开发环境,但如果你想以合法的方式做到这一点并不容易.
我使用Visual Studio 2005,那么是否有更优雅的方法来避免这种条件编译器语句?
编辑:使用SDK中的TlbImp.exe工具的解决方案非常有效,您只需记住通过使用sn.exe工具生成密钥文件为生成的文件赋予强名称,否则Visual Studio将无法编译解决方案:
"c:\...\SDK\v2.0\Bin\TlbImp.exe" "c:\...\Microsoft Office\Office10\MSWORD9.OLB" /keyfile:Office.snk /out:Office.dll
Run Code Online (Sandbox Code Playgroud) 我发现如何使用此查询确定哪些列是给定表的主键列:
SELECT CONSTRAINT_NAME, COLUMN_NAME
FROM
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
WHERE TABLE_NAME='tablename_here' AND
CONSTRAINT_NAME LIKE 'PK_%'
Run Code Online (Sandbox Code Playgroud)
我可以通过使用此查询找到身份种子和增量:
SELECT IDENT_SEED('tablename_here'), IDENT_INCR('tablename_here')
Run Code Online (Sandbox Code Playgroud)
我无法使用约束信息,因为主键约束可以跨多个列.我似乎无法找到任何Transact SQL函数来提供我的身份信息.
有人可以帮我理解如何找到身份信息吗?
我正在使用SQL Server 2000.