• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Странный глюк View?

  • Автор темы medin84
  • Дата начала
M

medin84

Довольно странный глюк однако!
Поначалу не мог понять в чем дело, толи ошибка скрипта.(script ok!)
Оказалось что, при выводе на Excell,Access значения столбцов смещяются на 1 столбец в лево.
Данные беру из значений столбцов view!
Может кто сталкивался с такой ситуацией. ;)
access:
access.jpg
view:
view.jpg
 
G

Guest

А как Вы к ним обращаетесь и что в коде написано? Может это связано с тем что в лотусе все время путанница с нумерацией, хотя столбцы нумеруются с 1 а не с 0. Вы данные все заносите или только те столбцы, которые выделены?
 
M

medin84

Вот код с которым вывожу в access.
Код:
Option Public
Option Declare
Uselsx "*LSXODBC"

Sub Initialize
Dim s As NotesSession
Dim ws As NotesUIWorkspace
Dim CurDB As NotesDatabase
Dim OKdbView As NotesView
Dim v As notesview
Dim nav As notesviewnavigator
Dim Entry As notesviewEntry
Dim n_Entry As Integer, i As Integer
'----------------
Dim OKdb As New NotesDatabase("DominoServer/KazNPU","DB/OK/Ok.nsf")
'----------------
Set s = New NotesSession
Set CurDB = s.CurrentDatabase
Set ws = New NotesUIWorkspace
'----------------
Dim con As New ODBCConnection
Dim qry As New ODBCQuery
Dim result As New ODBCResultSet
'-----------------Соединяемся с источником данных ODBC
Set qry.Connection = con
Set result.Query = qry
con.ConnectTo("LotusDB")
'-----------------------------------------------------------------------------
Set v=OKdb.getView( "ForMinistry" )
Set nav=v.createViewNav
Set Entry=nav.getFirst
n_Entry = Entry.SiblingCount

For i=1 To n_Entry
qry.SQL = "insert into LotusTable ("_
+ "SurName,"_
+ "Name,"_
+ "FatherName,"_
+ "Passport,"_
+ "PlaceBorn,"_
+ "DateBorn,"_
+ "CodeOrganizazii,"_
+ "Priznak,"_
+ "HomePhone) values ('"_
+ Cstr(Entry.ColumnValues(0)) +"','"_
+ Cstr(Entry.ColumnValues(1)) +"','"_
+ Cstr(Entry.ColumnValues(2)) +"','"_
+ Cstr(Entry.ColumnValues(3)) +"','"_
+ Cstr(Entry.ColumnValues(4)) +"','"_
+ Cstr(Entry.ColumnValues(5)) +"','"_
+ Cstr(Entry.ColumnValues(6)) +"','"_
+ Cstr(Entry.ColumnValues(7)) +"','"_
+ Cstr(Entry.ColumnValues(8)) + "')"
'----------------
Let result.CacheLimit = DB_NONE
Let result.FetchBatchSize = 1
Let result.MaxRows = 1000000
result.Execute
Set Entry = nav.getnextSibling(Entry)
Next
'----------------
result.Close(DB_CLOSE)
con.Disconnect
Set ws=Nothing
End Sub

Данные заносятся все.
 
G

Guest

странно. все правильно вроде. а Вы не пробовали менять местами столбцы? проблема с определенными столбцами или нет? Если код организации и признак перенести в другое место / поменять местами что будет? Или может проблема именно с 7 и 8 столбцами?
 
M

medin84

Думаю в скрипте проблем нет!
Все дело в представлении.
На рисунках показано что значение столбца "Priznak" в view, в access записалось в столбец "CodeOrganizazii".
И все остальные значения столбцов сместились за ним.
 
G

Guest

в смысле в коде если поставить код организации 1 столбцом или там 3 то все нормально? Признак передается? А то может там ничего не передается и происходит сдвиг? Хотя, наверное, действительно что то во вью... Посмотрите настройки вью, настройки столбцов, не найдется ничего примечательного?
 
M

medin84

Попробовал поменять "Priznak" с "CodeOrganizazii".
Теперь значение "Priznak" в порядке.
Но с "CodeOrganizazii" проблема. Значение столбца после "CodeOrganizazii" сместилось в "CodeOrganizazii"
 
G

Guest

ну вот и нашлась причина... посмотрите подробно свойсва этого столба в лотусе. попробуйте создать его заново, а старый удалите. Да, кстати, в свойствах столбца в лотусе, в advanced --> programmatic use --> name какое имя там указано? CodeOrganizazii или что то вроде $2??? Если номер указан, то посмотрите совпадает ли он с текущим номером столбца (какой он по счету) и самое главное, нет ли случайно еще столбцов с таким же номером?
 
M

medin84

Сделал все возможное. ;)
Что-то совсем не пойму.
Там значение берется не по полю, а статичное тоесть просто "50" из-за этого не может быть!
 
G

Guest

<!--QuoteBegin-medin84+22:08:2007, 12:37 -->
<span class="vbquote">(medin84 @ 22:08:2007, 12:37 )</span><!--QuoteEBegin-->Там значение берется не по полю, а статичное тоесть просто "50" из-за этого не может быть!
[snapback]76025" rel="nofollow" target="_blank[/snapback]​
[/quote]
в каком смысле? все столбцы берутся из вью, а это просто забивается 50? У Вас же по коду все берется из вью... Или все же из столбца? Если это число может в текст его перегнать?
 
M

medin84

Вообще убрал этот столбец.
В скрипте в нужном месте пишу "50" и все работает как надо.
Но все же не понятно, почему так происходит.

Вобщем вот так сделал.
Столбец со значением "50"(CodeOrganizazii) убрал.
Теперь значения не смещаются:
Код:
	For i=1 To n_Entry
qry.SQL = "insert into LotusTable ("_
+ "SurName,"_
+ "Name,"_
+ "FatherName,"_
+ "Passport,"_
+ "PlaceBorn,"_
+ "DateBorn,"_
+ "CodeOrganizazii,"_
+ "Priznak,"_
+ "HomePhone,"_
+ "AdressPoMestuZhitelstva,"_
+ "BaseEducationSpecEduYear) values ('"_
+ Cstr(Entry.ColumnValues(0)) +"','"_
+ Cstr(Entry.ColumnValues(1)) +"','"_
+ Cstr(Entry.ColumnValues(2)) +"','"_
+ Cstr(Entry.ColumnValues(3)) +"','"_
+ Cstr(Entry.ColumnValues(4)) +"','"_
+ Cstr(Entry.ColumnValues(5)) +"','"_
+ Cstr(50) +"','"_
+ Cstr(Entry.ColumnValues(6)) +"','"_
+ Cstr(Entry.ColumnValues(7)) +"','"_
+ Cstr(Entry.ColumnValues(8)) +"','"_
+ Cstr(Entry.ColumnValues(9)) + "')"
'----------------
Let result.CacheLimit = DB_NONE
Let result.FetchBatchSize = 1
Let result.MaxRows = 1000000
result.Execute
Set Entry = nav.getnextSibling(Entry)
Next
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!