Смысл такой - берем данные из одной базы и кидает в другую в разные таблицы. Из поля TCARDISSUE.FCARDNUM мы получаем значение которое должно быть десятичным числом, добавляем к нему смещение 1778296458317019339 и преобразуем в двоичные данные, которые запихиваем в поле CODEKEY другой базы
Dim conn1, conn2
Dim rs1, rs2, field_data, i
Dim ncdk
Set conn1 = CreateObject("ADODB.Connection")
Set conn2 = CreateObject("ADODB.Connection")
conn1.Open ("Provider=MSDASQL.1;Data Source=Апакс25;" & "Trusted_Connection=no;Initial Catalog=Apacs;" & "User ID=1; password=1")
conn2.Open ("Data Source = sphinx; Initial Catalog = tc-db-main; User ID=root")
set rs1 = conn1.Execute("SELECT TCARDISSUE.FID, TCARDHOLDERS.FLAST, TCARDHOLDERS.FFIRST, TCARDHOLDERS.FMIDDLE, TCARDISSUE.FACTIVE, TCARDISSUE.FDATETO, TCARDISSUE.FCARDNUM, TCARDISSUE.FCREATEDATE, TCARDHOLDERS.FTITLE, TCARDHOLDERS.FDEPT, TCARDIMAGES.FIMG, TOTHERVALUE.FOTHER11, TOTHERVALUE.FOTHER12, TOTHERVALUE.FOTHER13 FROM (TCARDIMAGES INNER JOIN (TCARDHOLDERS INNER JOIN TCARDISSUE ON TCARDHOLDERS.FID = TCARDISSUE.FCHID) ON TCARDIMAGES.FID = TCARDHOLDERS.FPHOTO) INNER JOIN TOTHERVALUE ON TCARDISSUE.FCHID = TOTHERVALUE.FCHID ORDER BY TCARDISSUE.FID")
set rs2 = CreateObject("ADODB.Recordset")
set rs3 = CreateObject("ADODB.Recordset")
' === Тело скрипта ===
rs2.CursorType = 3
rs2.LockType = 3
rs2.Open "PERSONAL", conn2
rs3.CursorType = 3
rs3.LockType = 3
rs3.Open "PHOTO", conn2
rs1.MoveFirst
do while not rs1.eof
rs2.AddNew
rs3.AddNew
rs2.Fields("ID").Value = rs1(0)
rs3.Fields("ID").Value = rs1(0)
rs3.Fields("PREVIEW_WIDTH").Value = "110"
rs3.Fields("PREVIEW_HEIGHT").Value = "146"
'rs3.Fields("PREVIEW_RASTER").Value = rs1(10)
rs3.Fields("HIRES_WIDTH").Value = "225"
rs3.Fields("HIRES_HEIGHT").Value = "339"
'rs3.Fields("HIRES_RASTER").Value = rs1(10)
rs2.Fields("NAME").Value = trim(""&rs1(1)&" "&rs1(2)&" "&rs1(3))
rs2.Fields("POS").Value = trim(""&rs1(8))
rs2.Fields("TABID").Value = trim(""&rs1(11))
rs2.Fields("TYPE") = "EMP"
rs2.Fields("EXPTIME").Value = rs1(5)
rs2.Fields("CREATEDTIME").Value = rs1(7)
rs2.Fields("DESCRIPTION").Value = trim(""&rs1(9)&vbCrLf&"Номер приказа:"&rs1(12)&vbCrLf&"Примечание:"&rs1(13))
ncdk=(rs1(6)+1778296458317019339) 'проблема с этими
rs2.Fields("CODEKEY").Value = String2ByteArray(ncdk) 'строками
Select Case rs1(4)
Case 1
rs2.Fields("STATUS").Value = "AVAILABLE"
Case Else
rs2.Fields("STATUS").Value = "FIRED"
rs2.Fields("FIREDTIME").Value = rs1(5)
End Select
'A = rs1(0)
'E = "D:\FOTO\"&A&".BMP"
'C = SaveBinaryData(E, rs1(10))
rs2.Fields("CODEKEYTIME").Value = Now()
rs2.Update
rs3.Update
rs1.MoveNext
loop
WScript.Echo "ГОТОВО"
conn1.Close
conn2.Close
' === Функции и процедуры ===
Function String2ByteArray(str)
Dim OriginalLocale
OriginalLocale = SetLocale("en-us")
With CreateObject("ADODB.Stream")
.Type = 2 'adTypeText
.Charset = "windows-1251"
.Open
.WriteText str, 0
.Position = 0
.Type = 1 'adTypeBinary
String2ByteArray = .Read
End With
SetLocale OriginalLocale
End Function
Function SaveBinaryData(filename, byteArray)
Const adSaveCreateOverWrite = 2
With CreateObject("ADODB.Stream")
.Type = 1 'adTypeBinary
.Open
.Write byteArray
.SaveToFile filename, adSaveCreateOverWrite
.Close
End With
End Function
Кто рано встает того и тапки