|
Hi Experts,
I would like to Synchronize MS-Access database from sql server 2005 database realtime.
One way was to alter the code and make a separate connection string for MS-access in VB for inserts. But what modifying in code is not allowed.
So I have linked the MS-Access using addlinkedserver and established a connection in that and than I have created a trigger in Sql database so that whenever the table of sql will insert it will get inserted in MSAccess too.
Its working from sql server browser very well but not working from vb front. Giving error like 'linked server 'ecapacitor' does not support the required transaction interface.
My trigger is this:
create trigger updmth
on day_trn
AFTER insert
As
begin
commit
insert into ecapacitor...mth_trn
(ldaytrn_id,lgl_id,lacc_id,nentry_id,sdate,snchcltr,damt,nchqno,sparticulars,bdc)
select ldaytrn_id,lgl_id,lacc_id,nentry_id,sdate,snchcltr,damt,nchqno,sparticulars,bdc from inserted
begin tran
end
Please let me have a solution for this. An quick reply will be highly appreciable.
Thanks & Best regards
Jay Khatri
|
|
|
|
|
What happens when you remove the "commit" and "begin tran" statements?I are Troll
|
|
|
|
|
If I remove commit and begin trans, it stops working even in sql browser. But not start to work in Vb6.0.
My connection string in VB for sql server is "Provider=SQLOLEDB.1;Password=" & CURRENT_Password_sa & " ;Persist Security Info=True;User ID=sa;Initial Catalog=" & CURRENT_DATA & ";Data Source=" & ty
My question is if Microsoft Jet oledb insert can be done from sql server why it is not being from vb front end.
One more point Is it a problem of begin, commit of transactions.
Please reply soon.
Thanks & Best Regards
Jay Khatri
|
|
|
|
|
JayKhatri wrote: One more point Is it a problem of begin, commit of transactions.
That was my first guess; the begin tran and commit look like they should be swapped. The "begin" marks everything that gets wrapped in the transaction, the commit says that the transaction can be saved to disk.
JayKhatri wrote: My question is if Microsoft Jet oledb insert can be done from sql server why it is not being from vb front end.
It seems that Access is the main problem here. Microsoft Access doesn't have triggers, that might be the reason why it works from the SQL Browser, and not over the JET-engine.
Are you doing the insert in the SQL Server database with a stored procedure? If so, then you could add your insert -statement for the linked server at the end of that stored procedure.I are Troll
|
|
|
|
|
Hi
I tried all the combinations of commit tran and begin all got failed.
Secondly, It is true the access don't have triggers, so do I go for another sql server db instead of ms-access.
I think finally I must leave try with MS Jet.
Please suggest.
Thanks & Best Regards
Jay Khatri
|
|
|
|
|
JayKhatri wrote: Secondly, It is true the access don't have triggers, so do I go for another sql server db instead of ms-access.
I think finally I must leave try with MS Jet.
Microsoft Access doesn't focus on being a good database-server, that's what it's big brother is for. You can convert the Access database to a SQL Server database using the Upsize Wizard[^]. Next, you could use the SQL Express server to host the database, which is available for free (just like Access).
JayKhatri wrote: I tried all the combinations of commit tran and begin all got failed.
From the trigger, or from the SQL Workbench?I are Troll
|
|
|
|
|
please see this, the last working trigger from sql server. Now vb giving no error but not entering anything in access.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [updmth]
on [dbo].[Day_Trn]
AFTER insert
As
begin
declare @tmp table (ldtrn decimal, lgl_id int,lacc_id decimal,nentry_id int,sdate datetime, snchcltr tinyint,damt decimal,nchqno varchar(9),spart varchar(50),bdc tinyint)
insert @tmp (ldtrn, lgl_id,lacc_id,nentry_id,sdate, snchcltr,damt,nchqno,spart,bdc) select ldaytrn_id,lgl_id,lacc_id,nentry_id,sdate,snchcltr,damt,nchqno,sparticulars,bdc from inserted
commit
insert ecapacitor...mth_trn (ldaytrn_id,lgl_id,lacc_id,nentry_id,sdate,snchcltr,damt,nchqno,sparticulars,bdc)
select ldtrn, lgl_id,lacc_id,nentry_id,sdate, snchcltr,damt,nchqno,spart,bdc from @tmp
begin tran
end
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
Best Regards
Jay Khatri
|
|
|
|
|
|
The example puts the trigger on the SQL Server-table, and this trigger is executed by the server (and writes to the Excellsheet).
If you're adding data to the MS Access table using OleDb or ADO, then you'll bypass that trigger and it won't execute.I are Troll
|
|
|
|
|
Yes this code was for excel sheet, I got an idea for commit that I had written after insert. Other I had ignored in my case. and yes it is bypassing the trigger.
Is there still any Ray of Light as I have spoken to my senior who is less interested to select another sql db.
Best regards
Jay Khatri
|
|
|
|
|
JayKhatri wrote: Is there still any Ray of Light as I have spoken to my senior who is less interested to select another sql db.
There's some options;
- Find another location to update the Access-table (execute your insert manually, instead of a trigger)
- Use a database that has triggers
- Reverse the entire idea; you can create a linked table in the Access-database. Link it to an existing SQL Server table, and read the SQL Server data from Access. (From Access, go to the tab "external data", choose "more", choose "ODBC", and link to the SQL table)
I don't know which of these three would be most appropriate to you, as that largely depends on what you're trying to accomplish.I are Troll
|
|
|
|
|
Is there a way to find out what distance vertical scrollbar is moved on rtb?
|
|
|
|
|
|
|
MA Awan wrote: Rich Text Box
Why didn't you just say that the first time then!
What exactly are you trying to achieve, that you need to know how much it has scrolled?
|
|
|
|
|
calm down man! If you use VB much, you should be able to figure out what RTB stands for. Especially given the context.
|
|
|
|
|
Calm down? I am calm! back away from the gun and turn around
I have so much garbage swilling around in my head, and work in an industry that is full of TLA's i could not for the life of me think what RTB was, everything other than RichTextBox popped in to my head...even things that don't have RTB in them....premature senior moment i think!
5 for providing a solution though!
|
|
|
|
|
There is a way to get information about the scrolling. The code below will intercept the vertical and horizontal scroll calls and then get the information relating to them. Add the code below as a new class in your project.
Then, on your form, add a Label where the information will go to and on the load, create a new instance of this class passing in the RichTextBox and the Label . Then, whenever you scroll the information will be updated. The nPos tells you the bottom Y position of the last full line (unless you scroll to the top). If you scroll to the top, the nPos will display 0. If you have any questions about the code let me know.
You can use this to get the info you want. It's just a matter of interpreting the information.
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Imports System.Drawing
Public Class ScrollInterceptor
Inherits NativeWindow
Private Const WM_HSCROLL As Integer = 276
Private Const WM_VSCROLL As Integer = 277
Private Const SIF_TRACKPOS As Integer = &H10
Private Const SIF_RANGE As Integer = &H1
Private Const SIF_POS As Integer = &H4
Private Const SIF_PAGE As Integer = &H2
Private Const SIF_ALL As Integer = SIF_PAGE Or SIF_POS Or SIF_RANGE Or SIF_TRACKPOS
Private myLabel As Label
Private myTextBox As RichTextBox
<DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function GetScrollInfo(ByVal hWnd As IntPtr, ByVal n As Integer, ByRef lpScrollInfo As ScrollInfoStruct) As Integer
End Function
Private Structure ScrollInfoStruct
Public cbSize As Integer
Public fMask As Integer
Public nMin As Integer
Public nMax As Integer
Public nPage As Integer
Public nPos As Integer
Public nTrackPos As Integer
End Structure
Public Sub New(ByRef callingRichTextBox As RichTextBox, ByRef LabelToUpdateTo As Label)
Me.AssignHandle(callingRichTextBox.Handle)
myLabel = LabelToUpdateTo
myTextBox = callingRichTextBox
End Sub
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
Select Case m.Msg
Case WM_HSCROLL, WM_VSCROLL
Dim sInfo As New ScrollInfoStruct
sInfo.fMask = SIF_ALL
sInfo.cbSize = Len(sInfo)
GetScrollInfo(m.HWnd, 1, sInfo)
myLabel.Text = "nPos = " & sInfo.nPos & vbNewLine &
"char = " & myTextBox.GetCharFromPosition(New Point(1, sInfo.nPos)) & vbNewLine & _
"line = " & myTextBox.GetLineFromCharIndex(myTextBox.GetCharIndexFromPosition(New Point(1, sInfo.nPos)))
End Select
End Sub modified on Monday, February 8, 2010 4:22 PM
|
|
|
|
|
thnx. i will try that and let you know
|
|
|
|
|
hi all, i am new to visual basic anb i have encountered a User-defined type not defined can any one help me? please. below is my code, i put this code in my module
Public Function CN(strng As String, loc As CursorLocationEnum, ConnectionString As String) As Recordset
Set CN = New Recordset
CN.CursorLocation = loc
CN.CursorType = adOpenKeyset
CN.LockType = adLockOptimistic
CN.Open strng, ConnectionString, , , adCmdText
End Function
any idea please, i would really appreciate it
|
|
|
|
|
Is that VB6 & ADO? Did you include a reference to the ADO libraries?I are Troll
|
|
|
|
|
what reference should i use?
|
|
|
|
|
joselito j. mebolos wrote: what reference should i use?
The reference to "Microsoft ActiveX Data Objects 2.8 Library", found under
C:\Program Files\Common Files\system\ado\msado15.dll
You might need to download the libraries[^] if the reference isn't available.I are Troll
|
|
|
|
|
Hi guys, i just wrote a vb.net program. i need to be able to view all sql servers on the office network in order to generate a dynamic connection string.
pls help.He who goes for revenge must first dig two graves.
|
|
|
|
|
I don't think that a well configured SQL server is just going to sit on the network and broadcast out saying 'Hi, I'm an SQL Server, Why don't you try and hack me'
You will need to get a list of the SQL servers from the relevant server admins, as well as which ports they accept connections on.
|
|
|
|
|