Благодаря. Я добавил еще один столбец IDENTITY 'x' во временную таблицу, после чего получил следующее:
DECLARE @tempVal varchar(255), @intMin INT, @intMax INT, @tempAlphaVal varchar(15)
-- Assigning the first value in the dataset -- starting the loop
SET @intMin = (SELECT MIN(x) FROM #Temp_CSV_Import)
-- Assigning the last value in the dataset -- stoping the loop
SET @intMax = (SELECT Max(x) FROM #Temp_CSV_Import)
-- adding another column to the table
ALTER TABLE #Temp_CSV_Import ADD alpha varchar(15);
WHILE (@intMin <= @intMax)
BEGIN
-- find the value of column a in row @intMin
SET @tempVal = (SELECT a FROM #Temp_CSV_Import WHERE x = @intMin)
-- check to see if the value has alpha
IF(@tempVal LIKE '%alpha%')
BEGIN
-- parse the string to get the number -- until the next alpha use this number
SET @tempAlphaVal = (SELECT SUBSTRING(@tempVal, CHARINDEX(' ', @tempVal) +1, 20))
END
ELSE
BEGIN
-- update apha with the temp value in @tempAlphaVal
UPDATE #Temp_CSV_Import SET alpha = @tempAlphaVal WHERE x = @intMin
END
-- increment @intMin
SET @intMin = @intMin + 1
END
-- lastly delete the alpha row since we do not need it anymore.
DELETE FROM #Temp_CSV_Import WHERE alpha is null
SELECT * FROM #Temp_CSV_Import
У меня были проблемы с этим и с бесплатным XTaskDialog API Naughter , чтобы получить механизм отката на машинах Windows XP через эмуляцию, что сделало эту реализацию диалогового окна намного более полезной. :)
В моем случае это была проблема контекста активации, как упоминалось в этой записи в блоге .
Или, цитируется здесь, на случай, если сообщение в блоге когда-нибудь потеряно в киберпространстве (применимо к Visual Studio):
Код для вставки на шаге 4:
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls"
version="6.0.0.0" processorArchitecture="*"
publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
Я предложил бы сравнить версию comctl32.dll на работе и нерабочих машинах Vista - и сравнение их контрольных сумм, даже если они сообщают о той же версии.
Другие вещи проверить:
Могло бы также стоить прочитать эту статью о контекстах активации.
Если другие машины, Вы раньше запускали программу, использовали Vista x86, вероятно, что существует PInvoke в Вашем коде, это вызывает проблему. Можно хотеть попытаться установить целевую архитектуру компилятора на x86, чтобы вынудить программу работать в WoW64 на x64 Vista. По умолчанию Visual Studio использует настройки, создающие блоки агностическими архитектурой способами. Это означает, что, когда Вы пытаетесь запустить программу.NET в системе на 64 бита, она должна быть выполнена размещенная собственной x64 версией CLR. Attemptiong для загрузки DLL на 32 бита в том контексте перестанет работать. Принуждение приложения работать в эмулированном x86 режиме, вместо этого, должно добиться цели.