Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - Отсекание части строки при вставке в таблицу Sql Server. VBS

Ответить
Настройки темы
VBS/WSH/JS - Отсекание части строки при вставке в таблицу Sql Server. VBS

В Поисках Истины


Сообщения: 802
Благодарности: 135


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: LilLoco
Дата: 20-11-2012
Добрый день. Столкнулся с проблемой вставки данных в таблицу Sql Server - данные в одном столбце отсекаются. Причину этому найти так и не смог. Прошу вашей помощи.

Одна и та же строка "abcdefghij_abcdefghij" в одном столбце "BCF_Name" содержится полностью, а в столбце "BTS_Name" - лишь первые 10 символов.

Структура таблицы следующая:

PHP код: Выделить весь код

CREATE TABLE dbo.[2GEvD]

    (
    
id                      INT IDENTITY NOT NULL,
    
starttime               DATE NOT NULL,
    
BSC_Name                VARCHAR (24NOT NULL,
    
BCF_Name                VARCHAR (24NOT NULL,
    
BTS_Name                VARCHAR (24NOT NULL,
    
CellId                  INT NOT NULL,
    
SDCCH_traffic_ave       FLOAT,
    
SDCCH_congest_time      FLOAT,
    
SDCCH_real_blocking     FLOAT,
    
Total_HO_failure        FLOAT,
    
Total_HO_success        FLOAT,
    
TCH_drop_call           FLOAT,
    
TCH_call_block          FLOAT,
    
Total_FTCH_seizure_time FLOAT,
    
Total_HTCH_seizure_time FLOAT,
    
CSSR_voice              FLOAT,
    
TCH_traffic_sum         FLOAT,
    
UL_gprs_RLC             FLOAT,
    
DL_gprs_RLC             FLOAT,
    
UL_egprs_RLC            FLOAT,
    
DL_egprs_RLC            FLOAT,
    
Drop_Call_Cell          FLOAT,
    
Drop_Call_Bss           FLOAT,
    
Drop_Call_Plmn          FLOAT,
    
objstyle                VARCHAR (100),
    
sw_geometry             IMAGE,
    
CONSTRAINT PK_2GEvD PRIMARY KEY (id)
    )
GO

CREATE INDEX CellId_2GEvD
    ON dbo
.[2GEvD] (CellId)
GO

CREATE INDEX Date_2GEvD
    ON dbo
.[2GEvD] (starttime)
GO 

Заполнение остальных полей происходит из Excel.

Код:

Код: Выделить весь код
	Dim i
	Dim sql
	Dim cmd
	Dim ConnectionString
		ConnectionString = _
				"Provider=SQLOLEDB;" & _
				"Data Source=xxx;" & _
				"Initial Catalog=xxx;" & _
				"User Id = xxx;" & _
				"Password = xxx"
	Set sql = CreateObject("ADODB.Connection")
	
	sql.Open ConnectionString
	for i = 2 to range.Rows.Count
		Set cmd = Nothing
		Set cmd = CreateObject("ADODB.Command")
		Set cmd.ActiveConnection = sql
		cmd.CommandType = 4
		cmd.CommandText = "[dbo].[InsertInto2GEvD]"
		cmd.Parameters.Append cmd.CreateParameter("starttime", 7, 1, 0, range.Cells(i,1).Text)
		cmd.Parameters.Append cmd.CreateParameter("BSC_Name", 200, 1, -1, range.Cells(i,2).text)
		cmd.Parameters.Append cmd.CreateParameter("BCF_Name", 200, 1,-1, "abcdefghij_abcdefghij")
		cmd.Parameters.Append cmd.CreateParameter("BTS_Name", 200, 1, -1, "abcdefghij_abcdefghij")
		cmd.Parameters.Append cmd.CreateParameter("CellId", 3, 1, 0, GetCellIdFromBTSName(range.Cells(i,4).text))
		cmd.Parameters.Append cmd.CreateParameter("SDCCH_traffic_ave", 5, 1, 0, range.Cells(i,5).Value)
		cmd.Parameters.Append cmd.CreateParameter("SDCCH_congest_time", 5, 1, 0, range.Cells(i,6).Value)			
		cmd.Parameters.Append cmd.CreateParameter("SDCCH_real_blocking", 5, 1, 0, range.Cells(i,7).Value)	
		cmd.Parameters.Append cmd.CreateParameter("Total_HO_failure", 5, 1, 0, range.Cells(i,8).Value)	
		cmd.Parameters.Append cmd.CreateParameter("Total_HO_success", 5, 1, 0, range.Cells(i,9).Value)		
		cmd.Parameters.Append cmd.CreateParameter("TCH_drop_call", 5, 1, 0, range.Cells(i,10).Value)		
		cmd.Parameters.Append cmd.CreateParameter("TCH_call_block", 5, 1, 0, range.Cells(i,11).Value)		
		cmd.Parameters.Append cmd.CreateParameter("Total_FTCH_seizure_time", 5, 1, 0, range.Cells(i,12).Value)		
		cmd.Parameters.Append cmd.CreateParameter("Total_HTCH_seizure_time", 5, 1, 0, range.Cells(i,13).Value)		
		cmd.Parameters.Append cmd.CreateParameter("CSSR_voice", 5, 1, 0, range.Cells(i,14).Value)		
		cmd.Parameters.Append cmd.CreateParameter("TCH_traffic_sum", 5, 1, 0, range.Cells(i,15).Value)	
		cmd.Parameters.Append cmd.CreateParameter("UL_gprs_RLC", 5, 1, 0, range.Cells(i,16).Value)		
		cmd.Parameters.Append cmd.CreateParameter("DL_gprs_RLC", 5, 1, 0, range.Cells(i,17).Value)		
		cmd.Parameters.Append cmd.CreateParameter("UL_egprs_RLC", 5, 1, 0, range.Cells(i,18).Value)		
		cmd.Parameters.Append cmd.CreateParameter("DL_egprs_RLC", 5, 1, 0, range.Cells(i,19).Value)	
		cmd.Parameters.Append cmd.CreateParameter("Drop_Call_Cell", 5, 1, 0, range.Cells(i,20).Value)		
		cmd.Parameters.Append cmd.CreateParameter("Drop_Call_Bss", 5, 1, 0, range.Cells(i,21).Value)
		cmd.Parameters.Append cmd.CreateParameter("Drop_Call_Plmn", 5, 1, 0, range.Cells(i,22).Value)
		cmd.Execute
	Next
	sql.Close
Хранимая процедура:

PHP код: Выделить весь код

CREATE PROCEDURE [dbo].[InsertInto2GEvD]

    @
starttime DATE,
    @
BSC_Name VARCHAR(10),
    @
BCF_Name VARCHAR(24),
    @
BTS_Name VARCHAR(10),
    @
CellID INTEGER,
    @
SDCCH_traffic_ave float,
    @
SDCCH_congest_time float,
    @
SDCCH_real_blocking float,
    @
Total_HO_failure float,
    @
Total_HO_success float,
    @
TCH_drop_call float,
    @
TCH_call_block float,
    @
Total_FTCH_seizure_time float,
    @
Total_HTCH_seizure_time float,
    @
CSSR_voice float,
    @
TCH_traffic_sum float,
    @
UL_gprs_RLC float,
    @
DL_gprs_RLC float,
    @
UL_egprs_RLC float,
    @
DL_egprs_RLC float,
    @
Drop_Call_Cell float,
    @
Drop_Call_Bss float,
    @
Drop_Call_Plmn float
    
AS 
BEGIN 
    INSERT INTO 
[dbo].[2GEvD] (starttimeBSC_NameBCF_NameBTS_NameCellIdSDCCH_traffic_aveSDCCH_congest_timeSDCCH_real_blockingTotal_HO_failureTotal_HO_successTCH_drop_callTCH_call_blockTotal_FTCH_seizure_timeTotal_HTCH_seizure_timeCSSR_voiceTCH_traffic_sumUL_gprs_RLCDL_gprs_RLCUL_egprs_RLCDL_egprs_RLCDrop_Call_CellDrop_Call_BssDrop_Call_Plmn)
    
VALUES (@starttime,@BSC_Name,@BCF_Name,@BTS_Name,@CellID,@SDCCH_traffic_ave ,@SDCCH_congest_time ,@SDCCH_real_blocking ,@Total_HO_failure ,@Total_HO_success ,@TCH_drop_call ,@TCH_call_block ,@Total_FTCH_seizure_time ,@Total_HTCH_seizure_time ,@CSSR_voice ,@TCH_traffic_sum ,@UL_gprs_RLC ,@DL_gprs_RLC ,@UL_egprs_RLC ,@DL_egprs_RLC ,@Drop_Call_Cell ,@Drop_Call_Bss ,@Drop_Call_Plmn)
END 

Ранее объявлен range, с ним проблем нет. Функция GetCellIdFromBTSName - просто возвращает номер станции. Уже долгое время ищу причину, никак найти не могу.

Изначально думал, что отсекание проходит на стороне сервера, но при выполнении запроса из Management Studio вставка проходит полностью.

Строка "abcdefghij_abcdefghij" приведена как пример. В таблице храняться немного другие данные вида: NN(*), где * - символы, количесвто которых не превышает 15.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 12:11, 20-11-2012

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - Отсекание части строки при вставке в таблицу Sql Server. VBS

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] удаление части строки nvitek Скриптовые языки администрирования Windows 18 27-08-2014 17:32
Разное - Неверная кодировка при вставке ValeryL Microsoft Windows 7 7 28-08-2013 15:28
2010 - Word | Как разделить таблицу на две части по вертикали Vazgon Microsoft Office (Word, Excel, Outlook и т.д.) 3 09-02-2012 12:33
Ошибка - Восклицательный знак при вставке флешки Ligas Microsoft Windows 2000/XP 3 20-01-2011 15:00
Иногда при вставке диска в CD-Rom ПК перезагружается Leon71 Microsoft Windows 95/98/Me (архив) 6 20-02-2004 17:19




 
Переход