Page 1 of 1
Ayuda con MS-SQL
Posted: Thu Jan 12, 2023 6:15 am
by jorge.posadas
Grupo
Me pidieron hacer una pequeña aplicación que Inserte/Borre/Actualice/Consulte una base de datos de SQL (me refiero a SQL de Microsoft),
ya tengo el 80% de avance, PEROO se me presentó dos problemas:
1- ¿cómo puedo saber si mi aplicación ya se conectó a la base de datos, por el momento sino se conecta manda un error y luego de sale de la aplicación y yo deseo mandar un mensaje al usuario de NO SE PUDO CONECTAR A LA BASE DE DATOS, INTENTE MÁS TARDE
2- Cuando hago un INSERT o un UPDATE, puede que me dé un error cuando intento insertar o actualizar, ¿Cómo le hago para "cachar" ese error de que no puedo ejecutar la acción?, para que de igual manera mandarle un mensaje al usuario.
De antemano muchas gracias por la ayuda
Re: Ayuda con MS-SQL
Posted: Thu Jan 12, 2023 2:42 pm
by serge_girard
1) When you make the connection; check return value
2) idem
Serge
Re: Ayuda con MS-SQL
Posted: Sun Apr 16, 2023 3:50 pm
by edufloriv
Hola Jorge,
Si estás usando ADO para conectarte me parece que buscas una función del propio objeto que atrape el error (como lo tiene Mysql). Me parece que en algún momento busque lo mismo y no lo encontré, yo uso esta función:
Code: Select all
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
* FUNCION : INICONEXION
* COMENTARIO: CONEXION AL SERVIDOR MS-SQL.
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC INICONEXION
LOCAL oError
LOCAL cIPConect := ""
LOCAL cIPAddress := ""
LOCAL cIPUsuario := ""
LOCAL cIPPassword := ""
LOCAL cIPCatalogo := ""
PUBLIC oConexion
PUBLIC INI_CONEX := .F.
IF FILE('c:\farmacom\ipdata.txt')
aIpData := Txt2Array('c:\farmacom\ipdata.txt')
cIpAddress := UNCRYPT( aIpData[1] )
cIpUsuario := UNCRYPT( aIpData[2] )
cIpPassword := UNCRYPT( aIpData[3] )
cIpCatalogo := UNCRYPT( aIpData[4] )
ELSE
msginfo('no existe el archivo de conexión al servidor.')
Win_InfoFarma.Release
ENDIF
cIPConect := "Provider=SQLOLEDB;Network Library=DBMSSOCN;Data Source=" + cIpAddress + ";Initial Catalog=" + cIpCatalogo +";User Id=" + cIPUsuario + ";Password=" + cIpPassword + ";"
BEGIN SEQUENCE
oConexion := TOleauto():New('ADODB.Connection')
oConexion:ConnectionTimeout := 120
oConexion:Open(cIPConect)
INI_CONEX := .T.
RECOVER USING oError
MsgStop('No se pudo conectar al servidor SQL '+chr(13)+;
'el servidor retornó el siguiente error: '+chr(13)+;
oError:Operation+CRLF+oError:Description,"Conexión Ado")
Win_InfoFarma.Release
END SEQUENCE
RETURN
Llegué a esta conclusión porque el propio microsoft pone un ejemplo para vb:
Code: Select all
Dim Conn1 As New adodb.Connection
Dim Cmd1 As New adodb.Command
Dim Errs1 As Errors
Dim Rs1 As New adodb.Recordset
Dim i As Integer
Dim AccessConnect As String
' Error Handling Variables
Dim errLoop As Error
Dim strTmp As String
AccessConnect = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=nwind.mdb;" & _
"DefaultDir=C:\program files\devstudio\vb;" & _
"Uid=Admin;Pwd=;"
'---------------------------
' Connection Object Methods
'---------------------------
On Error GoTo AdoError ' Full Error Handling which traverses
' Connection object
' Connection Open method #1: Open via ConnectionString Property
Conn1.ConnectionString = AccessConnect
Conn1.Open
Conn1.Close
Conn1.ConnectionString = ""
' Connection Open method #2: Open("[ODBC Connect String]","","")
Conn1.Open AccessConnect
Conn1.Close
' Connection Open method #3: Open("DSN","Uid","Pwd")
Siendo AdoError:
Code: Select all
AdoError:
i = 1
On Error Resume Next
' Enumerate Errors collection and display properties of
' each Error object (if Errors Collection is filled out)
Set Errs1 = Conn1.Errors
For Each errLoop In Errs1
With errLoop
strTmp = strTmp & vbCrLf & "ADO Error # " & i & ":"
strTmp = strTmp & vbCrLf & " ADO Error # " & .Number
strTmp = strTmp & vbCrLf & " Description " & .Description
strTmp = strTmp & vbCrLf & " Source " & .Source
i = i + 1
End With
Next
Si logras averiguar algo distinto te agradeceré me lo hagas saber, ya que me interesa también poder realizar el "trapping" de conectividad al server.
Re: Ayuda con MS-SQL
Posted: Mon Apr 17, 2023 4:47 am
by jparada
Hola Jorge,
No sé si no entendí el requerimiento, no te vale con Try... Cath?
Saludos,
Javier