Работа с переменными

Тема в разделе "Lotus - Программирование", создана пользователем Hedg, 19 май 2006.

  1. Hedg

    Hedg Гость

    Есть поле ListBox
    По выбранному занчению нужно запросом вытянуть значени в другое поле.
    Делаю так

    s:=@GetField("ListBoxFiled");
    @DbCommand("ODBC":"NoCache";"uel";"lotus";"lotus01";"SELECT SUM_PAYMENT_CURRENCY from DBA.SALES_WHOLESALE where number_document='s'")

    И никаких реакций, поле не заполняется.
     
  2. Гость

    Попробуй вместо:
    "SELECT SUM_PAYMENT_CURRENCY from DBA.SALES_WHOLESALE where number_document='s'"

    написать:

    "SELECT SUM_PAYMENT_CURRENCY from DBA.SALES_WHOLESALE where number_document='"+@text(s)+"'"
     
  3. Domino6

    Domino6 Гость

    <!--QuoteBegin-Hedg+19:05:2006, 12:08 -->
    <span class="vbquote">(Hedg @ 19:05:2006, 12:08 )</span><!--QuoteEBegin-->s:=@GetField("ListBoxFiled");
    [snapback]36190" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    и заменить на
    s:=ListBoxFiled;
     
  4. Hedg

    Hedg Гость

    <!--QuoteBegin-Юлия+19:05:2006, 13:51 -->
    <span class="vbquote">(Юлия @ 19:05:2006, 13:51 )</span><!--QuoteEBegin-->"SELECT SUM_PAYMENT_CURRENCY from DBA.SALES_WHOLESALE where number_document='"+@text(s)+"'"
    [snapback]36197" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Работает. Ура. Благодарствую.
     
  5. Hedg

    Hedg Гость

    Возникла ещё одна проблемма.

    есть поле ComboBox в него выбираются значения из базы SyBase по дате.
    Дата берётся из поля типа Date/Time.

    Запрос на выборку выглядит следующим образом:
    @DbCommand("ODBC":"NoCache";"uel";"lotus";"lotus01";"SELECT number_document from DBA.SALES_WHOLESALE where DATE(date_check)='2006-04-12')

    Формат даты должен быть YYYY-MM-DD

    Дату преобразовываю так
    @Right(@Text(@GetField("Way_billDate"));4)+"-"+@Right(@Left(@Text(@GetField("Way_billDate"));5);2)+"-"+@Left(@Text(@GetField("Way_billDate"));2)

    Но вот сделать что-то типа

    da:=@Right(@Text(@GetField("Way_billDate"));4)+"-"+@Right(@Left(@Text(@GetField("Way_billDate"));5);2)+"-"+@Left(@Text(@GetField("Way_billDate"));2)
    @DbCommand("ODBC":"NoCache";"uel";"lotus";"lotus01";"SELECT number_document from DBA.SALES_WHOLESALE where DATE(date_check)='"+@Text(da)+"'")
    или так
    @DbCommand("ODBC":"NoCache";"uel";"lotus";"lotus01";"SELECT number_document from DBA.SALES_WHOLESALE where DATE(date_check)='"+@Text(@Right(@Text(@GetField("Way_billDate"));4)+"-"+@Right(@Left(@Text(@GetField("Way_billDate"));5);2)+"-"+@Left(@Text(@GetField("Way_billDate"));2))+"'")

    не получается.
     
  6. Domino6

    Domino6 Гость

    <!--QuoteBegin-Hedg+19:05:2006, 16:16 -->
    <span class="vbquote">(Hedg @ 19:05:2006, 16:16 )</span><!--QuoteEBegin-->Формат даты должен быть YYYY-MM-DD

    Дату преобразовываю так
    [snapback]36212" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Код (Text):
    y:=@text(@year(Way_billDate));
    m:=@text(@Month(Way_billDate));
    d:=@text(@Day(Way_billDate));
    mm:=@leftBAck("0"+m;2)
    dd:=@leftBAck("0"+d;2)
    fulldate:=y+"-"+mm+"-"+d
    и дальше по коду
     
  7. Hedg

    Hedg Гость

    <!--QuoteBegin-Domino6+19:05:2006, 18:30 -->
    <span class="vbquote">(Domino6 @ 19:05:2006, 18:30 )</span><!--QuoteEBegin-->y:=@text(@year(Way_billDate));
    m:=@text(@Month(Way_billDate));
    d:=@text(@Day(Way_billDate));
    mm:=@leftBAck("0"+m;2)
    dd:=@leftBAck("0"+d;2)
    fulldate:=y+"-"+mm+"-"+d
    [snapback]36220" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    У меня такая конструкция не работает- пишет No main or selection expression in formula 'd'
     
  8. Domino6

    Domino6 Гость

    <!--QuoteBegin-Hedg+22:05:2006, 10:01 -->
    <span class="vbquote">(Hedg @ 22:05:2006, 10:01 )</span><!--QuoteEBegin-->У меня такая конструкция не работает- пишет No main or selection expression in formula 'd'
    [snapback]36334" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Матчасть

    Допиши в конце

    fulldate:=y+"-"+mm+"-"+d;
    ""
     
  9. Hedg

    Hedg Гость

    <!--QuoteBegin-Domino6+22:05:2006, 10:38 -->
    <span class="vbquote">(Domino6 @ 22:05:2006, 10:38 )</span><!--QuoteEBegin-->Допиши в конце

    fulldate:=y+"-"+mm+"-"+d;
    ""
    [snapback]36343" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Не работает, ничего не вычисляется. Проблема не в этом, преобразование даты я могу делать каким угодно способом.

    Мне нужно из поля взять дату, преобразовать и подставить её в запрос, чтобы он вернул мне список (поле ComboBox)
    и от туда выбирирать одно из значений.
     
  10. Domino6

    Domino6 Гость

    Давай весь код в студию
     
  11. Hedg

    Hedg Гость

    значит так, поле Way_billDate - тип Date/Time
    из этого поля получаем дату и преобразовываем в формат YYYY-MM-DD
    запихиваем в поле NUMBER_DOCUMENT - тип ComboBox
    дата запихивается в запрос для выборки значений из поля базы SyBase
    Код (Text):
    @DbCommand("ODBC":"NoCache";"uel";"lotus";"lotus01";"SELECT number_document from DBA.SALES_WHOLESALE where DATE(date_check)='data'")
    затем поле SUM_PAYMENT_CURRENCY - тип Number
    запросом выводит значения основываясь на значениие поля NUMBER_DOCUMENT
    Код (Text):
    s:=@GetField("NUMBER_DOCUMENT");
    @DbCommand("ODBC":"NoCache";"uel";"lotus";"lotus01";"SELECT SUM_PAYMENT_CURRENCY from DBA.SALES_WHOLESALE where number_document='"+@Text(s)+"'")
    Если в запрос вставить просто значение даты
    Код (Text):
    @DbCommand("ODBC":"NoCache";"uel";"lotus";"lotus01";"SELECT number_document from DBA.SALES_WHOLESALE where DATE(date_check)='2006-05-22'")
    То всё работает.

    И ещё вопросы
    1. почему-то нельзя в данной форме использовать команду @Command([RefreshWindow]) - ругается что запрещены команды @ и другие UI функции в данном контексте.

    2. Данная форма работает только для моего пользователя, для других(даже админов) ругается что не может выполнить @db функцию
     
  12. Domino6

    Domino6 Гость

    <!--QuoteBegin-Hedg+22:05:2006, 11:27 -->
    <span class="vbquote">(Hedg @ 22:05:2006, 11:27 )</span><!--QuoteEBegin-->2. Данная форма работает только для моего пользователя, для других(даже админов) ругается что не может выполнить @db функцию
    [snapback]36362" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    У них не настроем ОДБС

    tDate:='2006-05-22';
    @DbCommand("ODBC":"NoCache";"uel";"lotus";"lotus01";"SELECT number_document from DBA.SALES_WHOLESALE where DATE(date_check)="+tDate+"\"")
     
  13. Hedg

    Hedg Гость

    <!--QuoteBegin-Domino6+22:05:2006, 11:59 -->
    <span class="vbquote">(Domino6 @ 22:05:2006, 11:59 )</span><!--QuoteEBegin-->tDate:='2006-05-22';
    @DbCommand("ODBC":"NoCache";"uel";"lotus";"lotus01";"SELECT number_document from DBA.SALES_WHOLESALE where DATE(date_check)="+tDate+"\"")
    [snapback]36368" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Не работает - <Data Access Application Layer> Could not execute @db Function

    tDate:='2006-05-22'; это значение не постоянно а выбирается из поля Way_billDate (в котором эта дата собственно и задаётся)
     
  14. Гость

    Ты уверен, что конструкция:
    s:=@GetField("NUMBER_DOCUMENT");
    Возвращает значение:
    '2006-05-22'
    Или другую дату в кавычках?

    Перепроверь. Скорее всего глюк там.
    А ОДБС можно настроить. :)
     
  15. Hedg

    Hedg Гость

    <!--QuoteBegin-Юлия+22:05:2006, 16:16 -->
    <span class="vbquote">(Юлия @ 22:05:2006, 16:16 )</span><!--QuoteEBegin-->s:=@GetField("NUMBER_DOCUMENT");
    [snapback]36404" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Просто такая конструкция работает в другом поле, а там формат 0963/05/1 и ничё работает.
    s:=@GetField("NUMBER_DOCUMENT"); правильно передаёт если использовать например тип поля Text или DialogList, а вот в ComboBox мне проверить не удалось, так что скорее всего проблема именно в самом типе поля.

    Может кто-то покажет как это сделать на Lotus Script, а то в нём я деревянный.
     
  16. Hedg

    Hedg Гость

    Проблема решена путём использования поля типа - DialogList
    ComboBox - не правильно обрабатывает получаемые данные.
     
  17. Hedg

    Hedg Гость

    Наконец-то всё работает, только беспокоят 2 момента.

    1. Иногда в базе появляются 300000 документов - открыть которые нельзя.

    2. Если в базе нет никаких записей на данную дату, то при замене даты на любую другую ,запрос к базе ничего не возвращает.


    Код (Text):
    sa:=@GetField("data")
    @DbCommand("ODBC":"NoCache";"uel";"lotus";"lotus01";"SELECT number_document from DBA.ISSUE_GOODS where DATE(date_check)='"+sa+"'")
     
  18. Гость

    А из-за чего они появляются? Когда возникает такая ошибка? Почему вы уверены, что они появляются? Что пишет при попытки открыть такой документ?

    ??? Уточните где меняется дата? Каким образом (код)? Каково значение поля, которое поменяли, и тип.
     
  19. Hedg

    Hedg Гость

    <!--QuoteBegin-Юлия+25:05:2006, 13:36 -->
    <span class="vbquote">(Юлия @ 25:05:2006, 13:36 )</span><!--QuoteEBegin-->А из-за чего они появляются?
    [snapback]36659" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Из-за чего появляеются незнаю.
    <!--QuoteBegin-Юлия+25:05:2006, 13:36 -->
    <span class="vbquote">(Юлия @ 25:05:2006, 13:36 )</span><!--QuoteEBegin-->Когда возникает такая ошибка?
    [snapback]36659" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Отловить момент появления пока не удалось.
    <!--QuoteBegin-Юлия+25:05:2006, 13:36 -->
    <span class="vbquote">(Юлия @ 25:05:2006, 13:36 )</span><!--QuoteEBegin-->Почему вы уверены, что они появляются?
    [snapback]36659" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Потому что база запускается путой, а потом в ней вдруг оказывается дофига документов, открыть которые нельзя.
    <!--QuoteBegin-Юлия+25:05:2006, 13:36 -->
    <span class="vbquote">(Юлия @ 25:05:2006, 13:36 )</span><!--QuoteEBegin-->Что пишет при попытки открыть такой документ?
    [snapback]36659" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Немогу сейчас сказать так как щас они все удалены и снова пока не появлялись.

    <!--QuoteBegin-Юлия+25:05:2006, 13:36 -->
    <span class="vbquote">(Юлия @ 25:05:2006, 13:36 )</span><!--QuoteEBegin-->??? Уточните где меняется дата? Каким образом (код)? Каково значение поля, которое поменяли, и тип.
    [snapback]36659" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Дата меняется в ручную - поле типа Date/Time

    Переделывая всё на LT столкнулся с той же проблемой запихнуть значение переменной в звпрос.

    Код (Text):
    Sub Click(Source As Button)

    Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Dim db As NotesDatabase
    Dim da As Variant
    Set uidoc = workspace.CurrentDocument
    Set doc = uidoc.Document
    Set db = doc.ParentDatabase

    Dim con As New ODBCConnection
    Dim qry As New ODBCQuery
    Dim res As New ODBCResultSet
    Dim fRc As Integer
    Dim strProductID As String

    da = doc.GetItemValue("ch")
    fRc = con.ConnectTo("uel","lotus","lotus01")

    If fRc Then
    Set qry.Connection = con       
    qry.SQL = "SELECT number_document FROM DBA.ISSUE_GOODS WHERE DATE(date_check)=?data?"
    Set res.Query = qry
    Call res.SetParameter("data","da")
    fRc = res.Execute  
    If fRc Then
    Do
    res.NextRow
    strProductID = res.GetValue("number_document")
    'Add product to list
    Messagebox strProductID
    Loop Until res.IsEndOfData 
    Else
    Messagebox "Unable to execute query."
    End If
    fRc = con.Disconnect   
    Else
    Messagebox "Unable to connect."
    End If

    End Sub
    Опять же если прописать в запросе дату - запрос выполняется, но передать её с помощью переменной не получается.
     
Загрузка...
Похожие Темы - Работа переменными
  1. Andrey Kha
    Ответов:
    0
    Просмотров:
    32
  2. Hoasker
    Ответов:
    0
    Просмотров:
    65
  3. garri671
    Ответов:
    0
    Просмотров:
    57
  4. lelik200969
    Ответов:
    0
    Просмотров:
    54
  5. Kozolick
    Ответов:
    0
    Просмотров:
    144

Поделиться этой страницей