Lotus и MySQL (ODBC)

  • Автор темы yerke
  • Дата начала
D

Dimly

Зато решается проблема переносимости кода. Переустановили винду или на другой машине решили поставить клиента, а про ODBC забыли...

в приведенных примерах ODBC не нужен. Нужен MDAC который всегда есть. Причем проблемы могут быть только с win 95-98.

Линух юзеры - у нас редкость, но вот при использовании сервака на никсах - будут проблемы.

А юзание явы разве идеальный выход ? На половине машин JVM от майкрософта - и например веб собрания СТ вообще ни разу не смогли запустится. Код Lotus+Java+RMDB не будет так же погонять в зависимости от JVM ?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 951
602
BIT
422
ява - выход (в подобной ситуации) и Домине плевать на жвм от глюкософта :)
я не вижу никакой зависимости, в указанном случае
 
M

Murat

Решал такую задачу и были такие же проблемы

минус № 1: работает тока там где установлен дрова от mysql odbc connector и при настроенном источнике данных
минус № 2: делаю экспорт с помощью лотус (используя mysql odbc connector) из базы мускула в базу лотуса,
кодировка таблиц и полей мускула на ютф-8 и через пхп все данные отображаются нормально
делал так как выше описали
№1 агент на сервере, делает выгрузку
№2
Код:
	res = initConnection( con )
If Ucase(ss.Platform) = "UNIX" Then
qry.SQL = "SET NAMES 'utf8'"
Else
qry.SQL = "SET NAMES 'cp1251'"
End If

res = result.Execute
работал :)
 
R

RixPvl

И снова поднимаю этот вопрос, люди, дайте плиз, ссылки и всю возможную информацию как сделать экспорт из lotus в mysql
Сервер: 8.5.1, Linux

Добавлено: Желательно, расписать :(
Начиная от создания соединения.
Меня сейчас интересует, как это настраивается на стороне сервера, и как создается сам непосредственно ODBC Connector.

Заранее спасибо!
 
R

RixPvl

Что реально НИ кто помочь не может? :(
скажите как нужно настроить ODBC на сервер Linux
 
M

morpheus

RixPvl
я делал связку ЛОТУС + MS SQL используя JAVA.
Тем более что у Вас Линукс.

Копайте тут
 

Cleric84

Well-known member
03.01.2008
599
0
BIT
9
когдато нарил на просторах интернета :)

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
Код:
'd_odbc - схема
'd_login - логин
'd_pwd - пароль

Dim odbc As New ODBCClass

If odbc.Connect(d_odbc, d_login, d_pwd) Then

End If


Option Public
Option Declare
Uselsx "*LSXODBC"
Class ODBCClass
Public CON As ODBCConnection
Public QRY As ODBCQuery
Public RS As ODBCResultSet
Private fmtDate As String
Public ROW List As String 'список значений в строке

Sub InitQry
Set RS = Nothing
Set QRY = Nothing
End Sub

Sub New
fmtDate = "dd-mm-yyyy"
Call InitQry
End Sub

Sub Delete
Call Disconnect
End Sub


Function Connect(dsn As String, userid As String, pwd As String) As Boolean
Set CON = New ODBCConnection
CON.SilentMode = True
If CON.ConnectTo(dsn, userid, pwd) Then
Connect = True
Else
Connect=False
Messagebox |Неможливо під'єднатися до бази "| & dsn & |".|
End If
End Function

Sub Disconnect
If Not (CON Is Nothing) Then
If CON.IsConnected Then CON.Disconnect
End If
End Sub

Function FieldValue(FieldName As String) As Variant
On Error Goto err1
FieldValue = ROW("<"+Ucase(FieldName)+">")
Exit Function
err1:
Msgbox("Помилка виконання запиту або дані не існують.")
Resume Next
End Function

Function GetDataType(typeConst As Integer) As String
Select Case typeConst
Case SQL_CHAR : GetDataType = "CHAR"
Case SQL_NUMERIC : GetDataType = "NUMERIC"
Case SQL_DECIMAL : GetDataType = "DECIMAL"
Case SQL_INTEGER : GetDataType = "INTEGER"
Case SQL_SMALLINT : GetDataType = "SMALLINT"
Case SQL_FLOAT : GetDataType = "FLOAT"
Case SQL_REAL : GetDataType = "REAL"
Case SQL_DOUBLE : GetDataType = "DOUBLE"
Case SQL_DATE : GetDataType = "DATE"
Case SQL_TIME : GetDataType = "TIME"
Case SQL_TIMESTAMP : GetDataType = "TIMESTAMP"
Case SQL_VARCHAR : GetDataType = "VARCHAR"
Case SQL_BINARY : GetDataType = "BINARY"
Case SQL_VARBINARY : GetDataType = "VARBINARY"
Case SQL_LONGVARCHAR : GetDataType = "LONGVARCHAR"
Case SQL_LONGVARBINARY : GetDataType = "LONGVARBINARY"
Case SQL_BIGINT : GetDataType = "BIGINT"
Case SQL_TINYINT : GetDataType = "TINYINT"
Case SQL_BIT : GetDataType = "BIT"
End Select
End Function

Function RunQry(qry_text As String) As Integer
Dim i As Integer
Set QRY = New ODBCQuery
Set QRY.Connection = CON
QRY.SQL = qry_text
Set RS = New ODBCResultSet
Set RS.Query = QRY
RS.Execute
'	Msgbox "rows = " & Cstr(odbc_rs.NumRows)
Erase ROW
If RS.NumRows <> 0 Then
For i = 1 To RS.NumColumns
'For i = 1 To RS.NumRows
Select Case RS.FieldNativeDataType(i)

Case SQL_DATE: 
ROW("<"+Ucase(RS.FieldName(i))+">") = Format(RS.GetValue(i), fmtDate)

Case SQL_NUMERIC,_
SQL_DECIMAL,_
DB_DOUBLE,_
SQL_INTEGER,_
SQL_SMALLINT,_
SQL_FLOAT,_
SQL_REAL,_
SQL_DOUBLE:	

Case Else: ROW("<"+Ucase(RS.FieldName(i))+">") = RS.GetValue(i)
End Select
Next
End If
RunQry = RS.NumRows
RS.Close(DB_CLOSE)
End Function	
End Class
 
R

RixPvl

Спасибо, ну а, вот объясните мне
ну вот допустим я поднял сервер MYSQL на сервере, есть логин и пароль к нему, а так же его ИП и порт
как мне из лотуса к нему подключиться и выполнить запрос?

многие на форму пишут через ODBC, а как в этом ODBC сделать соединение ни кто не объясняет :)
 

Cleric84

Well-known member
03.01.2008
599
0
BIT
9
RixPvl

пуск - выполнить - odbcad32 - дальше разберетесь
 
R

RixPvl

а на Linux как?

Добавлено: и как я понимаю эти действия нужно сделать на том ПК где будет стоять сама база которая будет работать с сервером SQL
 

Cleric84

Well-known member
03.01.2008
599
0
BIT
9
как пример

если инициатор отправки даннихх сервер, тогда на серваке нужно одбс если клиент тогда на клиенте
 
N

nvyush

Используйте JDBC. Погуглите соответствующий JDBC- драйвер, установите согласно прилагаемой к нему документации, для доступа к БД воспользуйтесь ссылкой от Morpheus или напишите своё.
 
R

RixPvl

Теперь вроде как что то начал понимать, вот теперь вопрос для закрепления
В общем мне нужно будет создать DSN там указать настройки на нужный мне сервер, затем, создать в базе ODBC Connect с названием DSN, а логин и пароль указать от самой базы?
 
R

RixPvl

В общем ситуация такая, поднял сервер на винде (временно) решил разобраться как это в обще сама по себе работает эта система.
Ну так вот установил драйвер Mysql, создал DSN, ну вот теперь дело дошло как создать в базе соединение, вот что получилось, а что дальше? да и при нажатии на кнопку BROWSE METADATA пишет что не запущена служба DECS, пытаюсь ее запустить она не поднимается, пишет что отсутствует этот модуль, и найти его не могу
 

Cleric84

Well-known member
03.01.2008
599
0
BIT
9
RixPvl

в нотес ини нужно прописать ету службу, почитайте в хелпе F1
 
R

RixPvl

В общем со службой разобрался, запустил, а теперь жму опять "BROWSE METADATA" "Server Error: realtime service encountered a missing or valid data connection resource". Что не так?

Добавлено:
Все разобрался, спасибо больше, теперь один и надеюсь последний вопрос, сделал коннект, используя класс Cleric-Lviv (за что ему большое спасибо ;) ) как выбрать базу?

Добавлено:
А все понял :lovecodeby: просто уже запарился :) все сем большое спасибо
 
R

RixPvl

Привет всем еще раз, в чем может быть проблема в функции IsResultSetAvailable все время возвращает false
<!--shcode--><pre><code class='vb'>Query = RS.Execute()
if RS.IsResultSetAvailable then
MsgBox "ok"
else
MsgBox "no"
End if[/CODE]
 
R

RixPvl

Cleric-Lviv
В том то и дело что когда я выполняю этот код не смотря на то что IsResultSetAvailable возвращает False
они есть
Код:
		If RS.NumRows <> 0 Then
For i = 1 To RS.NumColumns
MsgBox Rs.GetValue(i)
Next
End If

он возвращает данные, но когда я использую nextRow
Код:
		While Not MySQL.RS.Isendofdata()
MsgBox MySQL.RS.GetValue(1)
Call MySQL.RS.NextRow()
Wend
ничего не происходит
 

Cleric84

Well-known member
03.01.2008
599
0
BIT
9
Пробуйте так

Код:
If odbc.RS.NumRows <> 0 Then	
Do
odbc.RS.NextRow



Loop Until odbc.RS.IsEndOfData
End If

odbc.RS.Close(DB_CLOSE)
odbc.Disconnect
 
Мы в соцсетях:

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