SQL Server cimének megadása
2008-05-27T10:08:58+02:00
2008-05-28T13:33:21+02:00
2022-07-29T10:40:31+02:00
Heureca
Sziasztok.

Valakinek potya 50-es jár majd ezért a kérdésért, de bevállalom

Szóval : azt szeretném kérdezni, hogy VB6 segitségével irok egy egyszerű kis progit, ami egy formon tartalmaz néhány textboxot, labelt, datagrid-et, nyomógombot, satöbbi...

Ezek az cuccok egy sql server 2000-ből kapják az adatokat, és itt jön a problémám : hogy lehet azt megoldani, hogy elindul a progra, és kérje be az sql server IP-jét, pl. : 192.168.x.1 ahol az A,B,és a D az mindig állandó, csak a C osztály változik?

Gondolom, hogy ez valami nagyon egyszerű kis source, de nem találtam még ilyet sehol sem

Előre is köszi minden segitséget.

H.
Mutasd a teljes hozzászólást!
Bakker

1. Már az 1. hozzászólásban leírtam az inputbox-ot, olvasni kéne.

2. Tervezési időben legyen üres az ADODC connection stringje.

3. Vagy a form_onload-ban, vagy egy külön main() függvényben kérd be a hiányzó részt, sztring összefűzéssel állítsad elő a ConnectionString-et és add át értékül az ADODC ConnectionString tulajdonságának. Ahogy Micu is írta, adat ellenőrzés nem árt.

4. Ha az IP címek listája fix, akkor csinálj egy külön kis form-ot, rajta egy combobox-szal, ami tartalmazza a lehetséges értékeket. Utána ugyanúgy sztring összefűzés. Ha a lista nem fix, akkor használhatod ezt. Az utóbbi valószínűleg elég lassú lesz, pláne egy ilyen szegmentált hálózaton.
Mutasd a teljes hozzászólást!

  • InputBox és string összefűzés. De csinálhatsz egy kis formot is neki.
    Mutasd a teljes hozzászólást!
  • itt nézz szét, talán segít

    http://www.connectionstrings.com/?carrier=sqlserver

    Access&ADO-nál valahogy így kell.
    Application.CurrentProject.CloseConnection
    majd inputbox-al bekéred vagy valami felülettel és befűzöd a megfelelő helyre ide...
    Application.CurrentProject.OpenConnection "PROVIDER=SQLOLEDB.1.......stb."

    Mutasd a teljes hozzászólást!
  • Szia,

    köszi a gyors választ, de ez sajna, nem megoldás számomra

    A megadott weboldalt magam is használom, nagyon király kis oldal, de nem egészen erre gondolok...

    H.
    Mutasd a teljes hozzászólást!
  • Akkor ha se Árnyéké, se NaLivi jabaslata nem megoldás, akkor kicsit pontosítani kelelne a feladatot.

    Mert ha 2-en (velem 3-an) ugyan úgy értették és te nem, akkor elég félreérthető volt.
    Mutasd a teljes hozzászólást!
  • mégegyszer végigolvastam a kérésed. Árnyék megválaszolta azt rendesen...

    megj. nekem a connection dolog az keményebb, mint az adatbekérés és string összefűzés lehet, hogy csak félreértettem valamit.
    Mutasd a teljes hozzászólást!
  • Hát, ennél pontosabban nem tudom leirni a feladatot :

    - van egy kis alkalmazás, ami sima queryket használva dob vissza adatokat.

    - ezek az adatok más-más ip-jű gépekre feltelepitett sql szervereken vannak tárolva. Tehát, ha Béla user a 192.168.171.1-es SQL Szervert kérdezi le, akkor, mivelhogy irtam, hogy az A,B,és a D-osztály az konstans, nem változik, akkor csak a C-t kellene megadnia, jelen esetben a 171-et kellene valahogy megadni : textbox, vagy bármilyen más megoldással. Igazából ADO-t szeretnék használni, mert túl sok adat nem jön, néhány rekord az egész. Ehhez a VB6 beépitett ADODC-komponensét szeretném valahogy a program inditásakor kvázi felparaméterezni ezzel a C-osztályú változó számmal.

    Béla user kilép, jön Sanyi user, aki viszont a 192.168.110.1-es servert szeretné megkérdezni, és ezt valahogy a progi tudomására kellene hozni

    Elképzelésem : elindul a progi, kapásból megkérdezi, hogy melyik servert szeretné használni, oda beirja pl a Béla user a 171-et, rácsatlakozik, és tudja a lekérdezést inditani...

    Nagyjából ennyi lenne...

    H.
    Mutasd a teljes hozzászólást!
  • Árnyék alapján:

    cim="192.168." & inputbox("Kérem 'C' részt")&".1"

    Persze célszerűbb elöbb bekérni, vizsgálni, hogy lehet-e (nem betű, nem 300, ....)
    Ha igen, akkor összerakod a címet, és beállítod az ADODC komponensnek.
    Mutasd a teljes hozzászólást!
  • Csatlakozom az előttem szólókhoz:

    az adott link jelzi a megoldást

    Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword; DBMSSOCN=TCP/IP. This is how to use TCP/IP instead of Named Pipes. At the end of the Data Source is the port to use. 1433 is the default port for SQL Server.

    Az adtforrást kell módosítanod a megfelelő szerver kiválasztásához (ha az adott elérési mód [TCP/IP] ott engedélyezett).
    Mutasd a teljes hozzászólást!
  • Azt hiszem Access-ről van szó ebben az esetben:
    Gondolom nem a bekérés módja a probléma, hanem hogy mindig a megfelelő SQL szerverhez csatlakozzon. Legalapvetőbb ha ADO komponenseket használsz, és mindig az indításkor megadott szerverhez kapcsolódsz (mondjuk eltárolod az IP cím és Szerver név párosokat egy táblában).

    Dim myConn As ADODB.Connection Dim ODBCDataSourceName, DataBaseName As String 'Ezeket az elején olvasod be a táblából a megadott IP cím alapján. Dim cmd As ADODB.Command Set cmd = New ADODB.Command Set myConn = New ADODB.Connection myConn.Provider = "MSDASQL" myConn.ConnectionString = "ODBC;DSN=" + ODBCDataSourceName + ";DATABASE=" + DataBaseName + ";Integrated Security=true" myConn.Open cmd.ActiveConnection = myConn cmd.CommandType = adCmdText cmd.CommandText = "insert/update/delete ...utasítás" cmd.Execute 'lekérdezéshez pedig recordsetet használhatsz: Dim MySQL As String, str_Message As String CheckBackendDatabase = False MySQL = "SELECT * FROM TABLENAME" Dim RS As New ADODB.Recordset With RS Set .ActiveConnection = myConn .Source = MySQL .LockType = adLockReadOnly .CursorType = adOpenStatic .CursorLocation = adUseClient .Open End With While Not RS.EOF 'soronkénti feldolgozás RS.MoveNext Wend ' végén ne felejtsd el: Set cmd=Nothing Set RS=Nothing myConn.Close
    vagy használhatsz átmeneti táblákat (amely az access adatbázisban van, és szerkezete megegyezik a SELECT lekérdezés eredményével)
    Ebben az esetben tudsz kötni vezérlőkhöz mezőt egy adatforrásból. Csak ha a user módosít akkor azt mondjuk ugyanígy ADO commanddal visszaírod az adatbázisba (viszont lehet ütközés a felhasználók által módosított adatokban, ha többen módosították uazta rekordot, de más mezőket az gáz)
    pl:

    Dim MyQuery As QueryDef Dim CurrentDatabase As DAO.Database Set CurrentDatabase = CurrentDb() Set MyQuery = CurrentDatabase.CreateQueryDef("TmpQueryDef") 'vagy Set MyQuery = CurrentDatabase.QueryDefs("LétezőPassThroughQuery") With MyQuery .Connect = "ODBC;DSN=" + ODBCDataSourceName + ";DATABASE=" + DataBaseName + ";Integrated Security=true" .SQL = "SELECT utasítás" .ReturnsRecords = True End With CurrentDatabase.Execute "INSERT INTO ÁTMENETITÁBLA SELECT * FROM TmpQueryDef" 'vagy attól függően az elején mit választottál: CurrentDatabase.Execute "INSERT INTO ÁTMENETITÁBLA SELECT * FROM LétezőPassThroughQuery"

    nagyjából ennyi.

    Nem csak ODBC-vel lehet, de nincs kedvem annyit írni.

    Másik létező és működő megoldás minden objektumot újracsatolni az adatbázisba.
    Ehhez:

    Visual Basic

    Ha nem Accessről van szó, akkor ignoráld a hozzzászólásomat.
    Mutasd a teljes hozzászólást!
  • Azt hiszem Access-ről van szó


    És miből gondolod?

    Kérdés:
    azt szeretném kérdezni, hogy VB6 segitségével ...


    Késöbb:
    Ehhez a VB6 beépitett ADODC-komponensét
    Mutasd a teljes hozzászólást!
  • Igen?
    Mikor elkezdtem írni akkor még csak az eredeti kérdés volt postolva a VB6 az sokminden lehet.
    Mutasd a teljes hozzászólást!
  • Ha nem Accessről van szó, akkor ignoráld a hozzzászólásomat

    Ezt olvastad-e?
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • Szerintem php-ban .....
    Szerintem Javaban ....
    A falfestést meg így kell csinálni.....

    "Ha nem ezekről van szó, akkor ignoráld a hozzászólásomat"

    VB6 az sokminden lehet

    Például?
    Mert az Accessben VBA -van, az asp-ben, html script-ben, ... VBScript. (Mindegyik hasonlít a VB6-ra, de nem az)


    Mutasd a teljes hozzászólást!
  • Lehet, Hogy félreértem a kérdést, de a dbserverenum api fv-nyel fel tudod soroltatni a hálózaton elérhető mssql servereket.
    function dbserverenum(searchmode: word; servernamebuf: pointer; sizeservernamebuf: word; var numentries: Word):Integer; external 'ntwdblib.dll';
    Mutasd a teljes hozzászólást!
  • Szia.

    Nem, nem érted félre, a helyzet ettől függetlenül más.

    A workstationok, amelyeken ez a progi futna, jelen esetben 10.236-os tartományban vannak, az sql szerverek pedig 10.237-esben.

    Van átjárás a hálózatok között, bár pl. a net send nem müködik, de ehhez a problémához nem jó.

    A témanyitó 3-ik válasza, az inputbox-os megoldás majdnem elfogadható lenne, mert ha felparaméterem, akkor egy msgbox cim - paranccsal ki tudom iratni a kért ip-cimet, a gondom már csak annyi, hogy ezt hogy adjam az adodc tudtára?

    Vagy valami más connet ojjektummal kellene számolnom, ami könnyebben paraméterezhető source-ból?

    H.
    Mutasd a teljes hozzászólást!
  • Mit kell ezen ennyit tökölni: futásidőben kell beállítanod az ADODC ConnectionString-jét. Adatot meg csak be tudsz kérni és sztringet összefűzni VB alatt, nem?
    Mutasd a teljes hozzászólást!
  • Fenntartom:
    Mikor elkezdtem írni akkor még csak az eredeti kérdés volt postolva a VB6 az sokminden lehet.

    Ennek amúgy mi köze a topikhoz : "És miből gondolod?" ?
    Ahogy a szobafestés is úgy az én gondolataim is irrelevánsak itt.
    Jól gondolom-e, hogy megint csak kötözködsz?

    Nem kell válaszolnod, kösz.
    Mutasd a teljes hozzászólást!
  • Azért a szakmai részére válaszolhatnál:
    a VB6 az sokminden lehet.

    Pl. mi minden?
    Mutasd a teljes hozzászólást!
  • Bakker

    1. Már az 1. hozzászólásban leírtam az inputbox-ot, olvasni kéne.

    2. Tervezési időben legyen üres az ADODC connection stringje.

    3. Vagy a form_onload-ban, vagy egy külön main() függvényben kérd be a hiányzó részt, sztring összefűzéssel állítsad elő a ConnectionString-et és add át értékül az ADODC ConnectionString tulajdonságának. Ahogy Micu is írta, adat ellenőrzés nem árt.

    4. Ha az IP címek listája fix, akkor csinálj egy külön kis form-ot, rajta egy combobox-szal, ami tartalmazza a lehetséges értékeket. Utána ugyanúgy sztring összefűzés. Ha a lista nem fix, akkor használhatod ezt. Az utóbbi valószínűleg elég lassú lesz, pláne egy ilyen szegmentált hálózaton.
    Mutasd a teljes hozzászólást!
  • Például elírás.

    Olvastam a kérdést ez ugrott be pont nem figyeltem hogy vb6, mert pont Access volt nálam nyitva amiből pont ki tudtam másolni a megoldást. Na.

    Mutasd a teljes hozzászólást!
  • Én a helyedben nem tartanám fent, hanem elolvasnám újra a téma címét és a nyitó hozzászólást. Mindkettőben le van írva az SQL Server.
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • Há ja.
    Mutasd a teljes hozzászólást!
  • FYI: Nem az IP cím egyes bájtjait hívják A/B/C/D oszálynak, ez a hibás elnevezés csak zavart okoz.
    Mutasd a teljes hozzászólást!
  • Szia,

    köszi az FYI-t, de úgy gondolom, mindenki tudta, hogy pontosan mire gondolok, mivelelég jól le is modelleztem

    Szóval, imho, nagy zavart nemigen okoztam.
    H.
    Mutasd a teljes hozzászólást!
  • Ha jól értem, alapvetően egy stringet kellene három darabból összerakni, megértem, hogy ez komoly gond
    Mutasd a teljes hozzászólást!
  • Sia,
    bocs a kései válaszért...

    Hát, annyira nem lehet nehéz, de bevallom, még soha nem csináltam.

    A neten fellelhető, főleg angol nyelvű forrásokat meg nem min dig birom "értelmezni", annyira nem jó az angolom

    H.
    Mutasd a teljes hozzászólást!
  • Micu (Árnyék alapján ): cim="192.168." & inputbox("Kérem 'C' részt")&".1"
    Mutasd a teljes hozzászólást!
abcd