Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Отсекание части строки при вставке в таблицу Sql Server. VBS (http://forum.oszone.net/showthread.php?t=247302)

LilLoco 20-11-2012 12:11 2028838

Отсекание части строки при вставке в таблицу Sql Server. VBS
 
Добрый день. Столкнулся с проблемой вставки данных в таблицу 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.


Время: 21:52.

Время: 21:52.
© OSzone.net 2001-